在sql server中查询表时,我试图只获取当前页面的记录.但是,我需要为特定查询返回的记录总数,以计算页数.如何有效地执行此操作而无需编写另一个查询来计算记录.
WITH allentities
AS (SELECT Row_number() OVER (ORDER BY se.entityid ASC) AS
rowid
,empid
,lastname
,firstname
,d.depname
FROM emp e join dep d on e.depid=d.depid)
SELECT *
FROM allentities
WHERE rowid >= @pageid
AND rowid <= @pageid + 20
Run Code Online (Sandbox Code Playgroud)
如果您添加第二次ROW_NUMBER()排序DESC而不是ASC,则可以通过将两个行计数相加并减一来计算记录总数。结果集中的任何行都将具有正确的总行数:
WITH allentities
AS (SELECT Row_number() OVER (ORDER BY se.entityid ASC) AS
rowid
,empid
,lastname
,firstname
,d.depname
,ROW_NUMBER() OVER (ORDER BY se.entityid DESC) AS rowIdNeg
FROM emp e join dep d on e.depid=d.depid)
SELECT *
,rowid + rowIdNeg - 1 as totalRecords
FROM allentities
WHERE rowid >= @pageid
AND rowid <= @pageid + 20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2232 次 |
| 最近记录: |