Sql 不同的WHERE子句取决于子查询结果
我想Sql 不同的WHERE子句取决于子查询结果,sql,postgresql,Sql,Postgresql,我想根据子查询的结果选择列为空的位置或=值 下面是一个不正确的解决方案示例,演示了该问题: SELECT * FROM table WHERE column=( SELECT (CASE WHEN COUNT(*) = COUNT(COLUMN) THEN MIN(column) END) FROM table ) 当子查询返回NULL时,另一个查询将不返回任何内容,因为column=NULL从来都不是真的。我该如何解决这个问题 (子查询来源:)来自您的问题。只需在where子句中添加
根据子查询的结果选择列
为空的位置
或=值
下面是一个不正确的解决方案示例,演示了该问题:
SELECT *
FROM table
WHERE column=(
SELECT (CASE WHEN COUNT(*) = COUNT(COLUMN) THEN MIN(column) END)
FROM table
)
当子查询返回NULL
时,另一个查询将不返回任何内容,因为column=NULL
从来都不是真的。我该如何解决这个问题
(子查询来源:)来自您的问题。只需在
where
子句中添加或列为NULL
您将获得子查询条件或列为NULL
数据
SELECT *
FROM table
WHERE column= (
SELECT (CASE WHEN COUNT(*) = COUNT(COLUMN) THEN MIN(column) END)
FROM table
) OR column IS NULL
从你的问题。只需在
where
子句中添加或列为NULL
您将获得子查询条件或列为NULL
数据
SELECT *
FROM table
WHERE column= (
SELECT (CASE WHEN COUNT(*) = COUNT(COLUMN) THEN MIN(column) END)
FROM table
) OR column IS NULL
如果您只想找一排,我建议:
select t.*
from table t
order by column nulls first
fetch first 1 row only;
如果您只想找一排,我建议:
select t.*
from table t
order by column nulls first
fetch first 1 row only;
您使用的是什么?如果解决方案是特定于rdbms的,那么我更喜欢PostgreSql。您可以提供一些示例数据和预期结果吗,我希望获取名为
a
的行,如果该行不存在,则获取名为c
的行。正如您所写,添加或column IS NULL
解决了我的问题。您使用的是什么?如果解决方案是特定于rdbms的,那么我更喜欢PostgreSql。您可以提供一些示例数据和预期结果吗,我希望获取名为a
的行,如果该行不存在,则获取名为c
的行。正如您所写,添加或column IS NULL
解决了我的问题。