对于分页,我通常在 sql server 2012 存储过程中使用类似的东西(使用 sys.system_columns,不确定这是否是一个很好的表来演示):
DECLARE
@page INT = 10,
@pagesize INT = 10;
WITH syscols AS
(
SELECT
TotalRows = COUNT(1) OVER (),
RowNo = ROW_NUMBER() OVER (ORDER BY name),
Name
FROM sys.system_columns c
)
SELECT *
FROM syscols
WHERE RowNo BETWEEN 1 + (@page - 1) * @pagesize AND @page * @pagesize
ORDER BY RowNo;
我讨厌在每一行中包含 TotalRows 编号,并且想知道是否有正确的方法来返回 TotalRows 编号(例如 OUTPUT 参数) - 但不使用表变量或任何会降低查询效率的东西?