【问题标题】:How to get total number of rows in a executed select statement? [duplicate]如何获取执行的选择语句中的总行数? [复制]
【发布时间】: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


    【解决方案1】:

    您要么必须在相同条件下使用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() 值?
    • @AaronBertrand:你说得对,COUNT(*)OVER 更容易(已编辑)。
    【解决方案2】:
    -- statement here
    SELECT @@ROWCOUNT;
    

    你也可以在语句的每一行都得到它,但当然这要贵一点,例如

    SELECT x, y, z, COUNT(*) OVER() FROM ...
    

    【讨论】:

      猜你喜欢
      • 2020-03-11
      • 2016-06-16
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      相关资源
      最近更新 更多