SQL Server选择多个值,如果未找到任何值,则返回null

时间:2017-07-03 19:27:39

标签: sql sql-server

我有一个查询SELECT TOP 1 Mat,Dat FROM TableLog WHERE Of=1 order by Id desc;,可能不会返回任何内容。所以我得到了这样的结果集:

Mat  |   Dat

我希望得到NULL值,而不是像这样:

Mat  |   Dat
NULL     NULL

我尝试使用SELECT (SELECT TOP 1 Mat,Dat FROM TableLog WHERE Of=1 order by Id desc),但只有在我的选择中有一个值时它才有效!

我知道如何做到这一点?谢谢!

2 个答案:

答案 0 :(得分:4)

嗯。这很棘手。一种方法使用聚合:

SELECT MAX(Mat) as Mat, MAX(Dat) as Dat
FROM (SELECT TOP 1 Mat, Dat
      FROM TableLog
      WHERE Of = 1
      ORDER BY Id desc
     ) md;

始终保证没有GROUP BY的聚合查询返回一行。

答案 1 :(得分:3)

这也可以起作用,不需要聚合。

Dog

如果删除插入,则会返回NULL值。无法判断这是否比Gordon Linoff建议的更有效。