如果select则不返回任何内容

时间:2015-07-31 06:07:30

标签: sql sql-server

我试图将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'
)

1 个答案:

答案 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