首页 > 解决方案 > 不同的 WHERE 子句取决于子查询结果

问题描述

我想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 )

标签: sqlpostgresql

解决方案


从你的问题。只需添加OR column IS NULLinwhere子句。

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

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

推荐阅读