【发布时间】:2014-02-20 09:11:32
【问题描述】:
我怎样才能知道执行后获得了多少行?
我的查询是:
SELECT a.Emp,b.orders
from table as a inner join table1 b
on a.ID = B.ID
如何找到上述连接中返回的行数?
【问题讨论】:
标签: sql join count sql-server-2012
我怎样才能知道执行后获得了多少行?
我的查询是:
SELECT a.Emp,b.orders
from table as a inner join table1 b
on a.ID = B.ID
如何找到上述连接中返回的行数?
【问题讨论】:
标签: sql join count sql-server-2012
您要么必须在相同条件下使用SELECT COUNT(*) ...,要么通过ROW_NUMBER 函数添加具有行数的列:
SELECT a.Emp,b.orders, RN = ROW_NUMBER () OVER (ORDER BY a.Emp,b.orders)
FROM table as a inner join table1 b on a.ID=B.ID
...或在选择后使用@@ROWCOUNT。
而不是ROW_NUMBER,使用COUNT(*) OVER ( Order By ...) 更容易,其中每行包含相同的总计数,而ROW_NUMBER 将返回一个序列号,其中只有最后一条记录(根据ORDER BY)会有总数。
那么 Aaron 的意思是 in his answer。
【讨论】:
ROW_NUMBER() 函数将按该顺序应用,但如果外部查询中没有匹配的 ORDER BY,则不能保证按该顺序返回结果,尤其是如果有是一个不同的 ORDER BY。他们如何找到最大的ROW_NUMBER() 值?
COUNT(*)OVER 更容易(已编辑)。
-- statement here
SELECT @@ROWCOUNT;
你也可以在语句的每一行都得到它,但当然这要贵一点,例如
SELECT x, y, z, COUNT(*) OVER() FROM ...
【讨论】: