以下表达式
SELECT * FROM t
WHERE a = (SELECT MAX(a) FROM s)
当子查询返回NULL时,不返回任何内容 - 即使t.a
中存在NULL。
我希望在子查询返回NULL时从t返回NULL值,如果有任何匹配子查询,则从t返回非NULL值。
有干净的方法吗?
答案 0 :(得分:4)
表达式x IS NOT DISTINCT FROM y
相当于(x = y) OR (x IS NULL AND y IS NULL)
。所以:
SELECT * FROM t
WHERE a IS NOT DISTINCT FROM (SELECT MAX(a) FROM s)