【发布时间】:2022-05-01 22:35:37
【问题描述】:
我正在编写一个网页,以根据用户指定的过滤条件以交互方式过滤结果。我只想从 SQL 返回前 20 行,但我想知道有多少行符合条件(计数)。我希望能够告诉用户:“这是符合您的条件的前 20 行,顺便说一句,还有 2,000 行我没有在这里显示”。
我知道我可以简单地运行两次查询,但是 EWWWW 既昂贵又浪费。我怎样才能在不对数据库过度征税的情况下实现我想要的?
【问题讨论】:
标签: sql sql-server
我正在编写一个网页,以根据用户指定的过滤条件以交互方式过滤结果。我只想从 SQL 返回前 20 行,但我想知道有多少行符合条件(计数)。我希望能够告诉用户:“这是符合您的条件的前 20 行,顺便说一句,还有 2,000 行我没有在这里显示”。
我知道我可以简单地运行两次查询,但是 EWWWW 既昂贵又浪费。我怎样才能在不对数据库过度征税的情况下实现我想要的?
【问题讨论】:
标签: sql sql-server
您可以使用COUNT(*) OVER()
SELECT TOP 20 *,
COUNT(*) OVER() AS TotalMatchingRows
FROM master..spt_values
WHERE type='P'
ORDER BY number
执行两个查询可能会更有效,但特别是如果您有更窄的索引可用于确定匹配的行数但不涵盖整个SELECT 列表。
【讨论】:
select COUNT(*) from Process_Master where dt_time=(select top 1 (dt_time) from Process_Master order by DT_TIME desc)
【讨论】: