结果为空时如何返回NULL?

时间:2013-06-22 11:29:59

标签: mysql sql

我有一个简单的查询,它选择一个字段,只选择一行,即一个值。

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

我认为我需要使用NOT EXISTS,然后使用NULL但不确定的东西。

5 个答案:

答案 0 :(得分:11)

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

或者可能只是

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

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

  • 如果您的选择返回一个值,则返回该值。
  • 如果您的select语句返回一列但没有行,则返回NULL。
  • 如果您的select语句返回多列和/或多行,则无效,查询失败。

答案 1 :(得分:2)

一种简单的方法是使用聚合:

select max(col)
from t
where <your condition here>

这总是返回一行。如果没有匹配,则返回NULL

答案 2 :(得分:0)

使用带有NOT EXISTS的UNION(原始where子句)

select col1
from mytable
where <some condition>
union
select null
where not exists (
    select *  from mytable
    where <some condition>)

答案 3 :(得分:-1)

您可以使用COALESCE例如:

SELECT COALESCE(Field1,NULL) AS Field1 FROM Table1

编辑1: 抱歉,我将错误的返回字段设为null而不是结果集,因为结果集返回为null使用Union和Exist函数,如下所示:

SELECT NULL AS Field1 FROM Table1 WHERE not EXISTS(SELECT Field1 FROM Table1 WHERE Field2>0)
UNION
SELECT Field1 FROM Table1 WHERE Field2>0

答案 4 :(得分:-4)

您应该使用CASE语句。