我的存储过程中有一个临时表,我将填充一些select语句。最后,我必须只选择几个顶级记录发送到UI。
有什么方法可以让我知道总记录,但选择前几条记录。意味着如果我有2515条记录,但我只选择前1000条,但仍然可以了解总数。
SELECT TOP (@ROWS) *
FROM #tempMoveFinal
WHERE case_id = @case_id
ORDER BY last_update_date DESC, item_id
我尝试将所有记录放在另一个没有top行子句的临时表中,然后选择总行数,但这会使搜索查询变慢。
是否有可用于此案例的内置功能?
答案 0 :(得分:1)
我认为你是这样的意思:
with total as (
select
count(*) as TotalCount
from #tempMoveFinal
WHERE case_id = @case_id
)
SELECT TOP (@ROWS) *
,total.TotalCount
FROM #tempMoveFinal
CROSS JOIN total
WHERE case_id = @case_id
ORDER BY last_update_date DESC, item_id