SQLServer中两种分页方式的写法
说到分页,首先得有两个参数:
int pageSize; // 每页显示的数量
int pageIndex; // 当前的页数
第一种写法方法:
SELECT *
FROM YourTable
ORDER BY YourColumn
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;
在上述示例中,YourTable是你要查询的表名,YourColumn是用于排序的列名。OFFSET 10 ROWS表示从第11行开始返回结果,FETCH NEXT 10 ROWS ONLY表示返回接下来的10行结果。
传入参数就应该是:
SELECT *
FROM YourTable
ORDER BY YourColumn
OFFSET (pageIndex-1)*pageSize ROWS FETCH NEXT pageSize ROWS ONLY;
第二种写法,使用ROW_NUMBER()函数
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER(ORDER BY YourColumn) AS RowNum
FROM YourTable
) AS SubQuery
WHERE RowNum BETWEEN 11 AND 20;
在上述示例中,YourTable是你要查询的表名,YourColumn是用于排序的列名。通过在内部查询中使用ROW_NUMBER() OVER(ORDER BY YourColumn),我们为每一行分配一个行号(按顺序)。然后,在外部查询中,我们使用WHERE RowNum BETWEEN 11 AND 20来选择需要的分页结果。
传入参数就应该是:
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER(ORDER BY YourColumn) AS RowNum
FROM YourTable
) AS SubQuery
WHERE RowNum BETWEEN (pageIndex - 1) * pageSize + 1 AND (pageIndex - 1) * pageSize + 1;