我试图将select写为:
SELECT * FROM table1 a
WHERE a.d > (
SELECT b.d FROM table2 b
WHERE a.id = b.id and a.Something = 1
)
但是如果嵌套选择不返回任何值,那么SELECT也不会返回任何值。
可以编写如下内容:
SELECT * FROM table1 a WHERE a.d >
(SELECT * FROM
IF EXISTS (
SELECT b.d FROM table2 b WHERE a.id = b.id and a.Something = 1
)
SELECT b.d FROM table2 b WHERE a.id = b.id and a.Something = 1 )
ELSE
SELECT '0'
)
答案 0 :(得分:2)
您可以使用COALESCE
SELECT *
FROM table1 a
WHERE a.d > COALESCE((SELECT b.d FROM table2 b WHERE a.id = b.id and a.Something = 1), '0')
COALESCE
按顺序计算参数并返回当前值 最初未评估的第一个表达式的值 NULL。
有关详细信息,请参阅此link。