mysql 如何在result为空时返回NULL?

y1aodyip  于 2023-05-05  发布在  Mysql
关注(0)|答案(5)|浏览(223)

我有一个简单的查询,它只选择一个字段和一行,因此只有一个值。
如果查询结果是空集,有没有办法使它返回NULL?而不是返回零行?
我想我需要使用一些不存在,然后空,但不确定它。

lb3vh1jj

lb3vh1jj1#

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

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

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

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

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

blmhpbnm2#

一个简单的方法是聚合:

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

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

qco9c6ql

qco9c6ql3#

我认为这是最简单的方法:

SELECT
   IFNULL((SELECT your query), NULL)
z5btuh9x

z5btuh9x4#

将UNION与NOT EXISTS一起使用(原始where子句)

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

d8tt03nd5#

例如,您可以使用COALESCE:
SELECT COALESCE(Field1,NULL) AS Field1 FROM Table1

**编辑1:**抱歉,我错把return field当成null而不是result set,对于result set return as 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

相关问题