sqlserver 分页方法
时间: 2023-10-06 19:14:05 浏览: 129
SQL server分页的4种方法示例(很全面)
在 SQL Server 中实现分页有多种方法,下面介绍其中两种常用的方法:
1. 使用 OFFSET 和 FETCH NEXT 关键字
OFFSET 和 FETCH NEXT 关键字是 SQL Server 2012 引入的新特性,用于实现分页查询。语法如下:
```
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ...
OFFSET (page_number-1)*page_size ROWS
FETCH NEXT page_size ROWS ONLY;
```
其中,page_number 表示要查询的页码,page_size 表示每页显示的记录数。
例如,要查询第 2 页,每页显示 10 条记录,可以这样写:
```
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ...
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
```
2. 使用 ROW_NUMBER() 函数
ROW_NUMBER() 函数是 SQL Server 中常用的函数之一,可以给每条记录分配一个唯一的行号。结合子查询和 WHERE 子句,可以实现分页查询。具体语法如下:
```
SELECT column1, column2, ...
FROM (
SELECT column1, column2, ...,
ROW_NUMBER() OVER (ORDER BY column1, column2, ...) AS rownumber
FROM table_name
) AS temp
WHERE rownumber BETWEEN ((page_number-1)*page_size+1) AND (page_number*page_size);
```
其中,temp 是子查询的别名,rownumber 是行号,page_number 表示要查询的页码,page_size 表示每页显示的记录数。
例如,要查询第 2 页,每页显示 10 条记录,可以这样写:
```
SELECT column1, column2, ...
FROM (
SELECT column1, column2, ...,
ROW_NUMBER() OVER (ORDER BY column1, column2, ...) AS rownumber
FROM table_name
) AS temp
WHERE rownumber BETWEEN 11 AND 20;
```
以上是两种常用的 SQL Server 分页方法,可以根据具体情况选择使用。
阅读全文