【问题标题】:How do you Select TOP x but still get a COUNT of the whole query?您如何选择 TOP x 但仍获得整个查询的 COUNT?
【发布时间】:2022-05-01 22:35:37
【问题描述】:

我正在编写一个网页,以根据用户指定的过滤条件以交互方式过滤结果。我只想从 SQL 返回前 20 行,但我想知道有多少行符合条件(计数)。我希望能够告诉用户:“这是符合您的条件的前 20 行,顺便说一句,还有 2,000 行我没有在这里显示”。

我知道我可以简单地运行两次查询,但是 EWWWW 既昂贵又浪费。我怎样才能在不对数据库过度征税的情况下实现我想要的?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以使用COUNT(*) OVER()

    SELECT TOP 20 *, 
           COUNT(*) OVER() AS TotalMatchingRows
    FROM master..spt_values
    WHERE type='P'
    ORDER BY number
    

    执行两个查询可能会更有效,但特别是如果您有更窄的索引可用于确定匹配的行数但不涵盖整个SELECT 列表。

    【讨论】:

    • 我是白痴,你是禅师。 :-) 我喜欢 SQL 专家,没有多余的装饰,只是事实。谢谢你,马丁。
    【解决方案2】:

    select COUNT(*) from Process_Master where dt_time=(select top 1 (dt_time) from Process_Master order by DT_TIME desc)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 2012-04-13
      相关资源
      最近更新 更多