我有这个简单的代码
declare @a int, @b int
select @a=sum(1), @b=1 from syscolumns where 1 = 2
select @@rowcount, @a, @b
其结果是:@@rowcount=1
,@a=null
,@b=1
@a = null对我来说很好,但是@@ rowcount和@ b = 1怎么了
SQLFiddle:https ://rextester.com/PKCB94229
这是因为标量聚合(no GROUP BY
)即使在输入为空时也总是返回一行(假设noHAVING
子句消除了该行)
select sum(1) from syscolumns where 1 = 2
返回一行结果集,因此@@ROWCOUNT
正确地报告为1
。
如果要计算将标量聚合分配COUNT(*)
给变量的查询的输入行,则分配给另一个变量将是最简单的。