我有一个简单的查询,只选择一个字段和一行数据,因此只有一个值。
如果查询结果为空集,是否有办法使其返回NULL?而不是返回零行?
我认为我需要使用NOT EXISTS的某些东西,然后NULL,但并不确定。
我有一个简单的查询,只选择一个字段和一行数据,因此只有一个值。
如果查询结果为空集,是否有办法使其返回NULL?而不是返回零行?
我认为我需要使用NOT EXISTS的某些东西,然后NULL,但并不确定。
select
(Your entire current Select statement goes here) as Alias
from
dual
dual
是一个内置表,只有一行,可以用于此类目的。在 Oracle 中,这是强制性的,直到 23c 版本。MySQL 支持它,但您也可以只选择一个值而不指定表,如下所示:
select
(Your entire current Select statement goes here) as Alias
在任何情况下,您都选择了一个单一的值。这意味着:
LIMIT 1
来解决 :) - silkfireselect max(col)
from t
where <your condition here>
这个函数总是返回一行数据。如果没有匹配到结果,它会返回 NULL
。
t
表中所有列的最大值。该最大值不受where子句中条件限制。是这样吗? - GuildensternSELECT
IFNULL((SELECT your query), NULL)
SELECT NULL AS Field1 FROM Table1 WHERE not EXISTS(SELECT Field1 FROM Table1 WHERE Field2>0)
UNION
SELECT Field1 FROM Table1 WHERE Field2>0
使用带有NOT EXISTS的UNION(原始where子句)
select col1
from mytable
where <some condition>
union
select null
where not exists (
select * from mytable
where <some condition>)