首页 > 解决方案 > 为什么具有错误谓词的聚合查询会返回结果?有没有办法不得到结果?

问题描述

为什么这个查询返回一个结果集?

SELECT SomeString = 'Total' ,SUM(1) WHERE 1 = 2

我有一个类似的查询,由于谓词为假,我假设它不应该返回结果。这是故意的吗?如果是这样,我怎么能没有查询返回的结果?

标签: sql-serveraggregate

解决方案


聚合查询总是每组返回一行,没有 GROUP BY 则返回一行。

如果您不希望返回一行,您可以使用非聚合查询,例如

SELECT SomeString = 'Total', 
       SUM(1) over() total
WHERE 1 = 2

或像这样的子查询

with q as 
(
    SELECT SomeString = 'Total', SUM(1) total
    WHERE 1 = 2
)
select *
from q
where total is not null

推荐阅读