Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不同的WHERE子句取决于子查询结果_Sql_Postgresql - Fatal编程技术网

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
解决了我的问题。