我有一个查询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)
,但只有在我的选择中有一个值时它才有效!
我知道如何做到这一点?谢谢!
答案 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建议的更有效。