根据子查询结果的不同,WHERE子句

时间:2018-07-14 18:26:15

标签: sql postgresql

我想根据子查询的结果SELECT WHERE column IS NULL=value

这是一个不正确的解决方案示例,可以说明该问题:

SELECT *
FROM table
WHERE column=(
  SELECT (CASE WHEN COUNT(*) = COUNT(COLUMN) THEN MIN(column) END)
  FROM table
)

当子查询返回NULL时,其他查询将不返回任何内容,因为column=NULL从不为真。我该如何解决?

(子查询源:https://stackoverflow.com/a/51341498/7810882

2 个答案:

答案 0 :(得分:1)

根据您的问题。只需在OR column IS NULL子句中添加where

您将获得子查询条件或column IS NULL数据。

SELECT *
FROM table
WHERE column= (
  SELECT (CASE WHEN COUNT(*) = COUNT(COLUMN) THEN MIN(column) END)
  FROM table
) OR column IS NULL

答案 1 :(得分:1)

如果您只想查找一行,我建议:

select t.*
from table t
order by column nulls first
fetch first 1 row only;