结果为空时如何返回NULL?

分享于2022年07月17日 mysql sql 问答
【问题标题】:结果为空时如何返回NULL?(How to return NULL when result is empty?)
【发布时间】:2022-04-28 22:55:15
【问题描述】:

我有一个简单的查询,它选择一个字段和一行,因此选择一个值。

如果查询结果为空集,有没有办法让它返回 NULL?而不是返回零行?

我想我需要使用 NOT EXISTS, THEN NULL 但不确定的东西。

  • 又为什么要返回null
  • @Ankit 我正在插入,其中一列必须链接到另一个具有外部约束的表。空结果会导致 FALSE,我需要 NULL。
  • stackoverflow.com/questions/9487963/… 的代码与您需要的代码几乎相同

【解决方案1】:
select
  (Your entire current Select statement goes here) as Alias
from 
  dual

dual 是一个内置表,具有单行,可用于此类目的。在 Oracle 中,这是强制性的。 MySQL supports it ,但您也可以只选择单个值而不指定表,如下所示:

select
  (Your entire current Select statement goes here) as Alias

在任何一种情况下,您都选择了一个值。这意味着:

  • 如果您的选择返回一个值,则返回该值。
  • 如果您的 select 语句返回一列,但没有行,则将返回 NULL。
  • 如果您的 select 语句返回多列和/或多行,这将不起作用并且查询失败。

  • 这是一个内置的“假”表,只有一条记录。不过,我认为在 MySQL 中您实际上并不需要它,因为您可以只使用 select <Value> 而不指定表。
  • 天才。这正是我想要的。即使没有 alias ,它也能正常工作!
  • 是的,不需要别名,具体取决于您如何处理结果。 :)
  • 另外,第三种情况在内部查询中使用 LIMIT 1 解决:)
  • “什么是双重”,仍然没有答案:Mysql 没有“双重”。实际上,大多数数据库都没有它。甲骨文可以。我想不出其他人。这个问题被标记为 mysql。