SQL55 分页查询employees表,每5行一页,返回第2页的数据

SQL分页查询:第2页数据展示
该篇博客介绍了如何使用SQL的LIMIT子句进行分页查询,以从employees表中获取第2页的数据。示例展示了如何设置偏移量和取数量来正确获取指定页的数据。

描述
分页查询employees表,每5行一页,返回第2页的数据


drop table if exists  `employees` ; 
CREATE TABLE `employees` (
  `emp_no` int(11) NOT NULL,
  `birth_date` date NOT NULL,
  `first_name` varchar(14) NOT NULL,
  `last_name` varchar(16) NOT NULL,
  `gender` char(1) NOT NULL,
  `hire_date` date NOT NULL,
  PRIMARY KEY (`emp_no`));
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12');
INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02');
INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10');
INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15');
INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18');
INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22');
--输出:
10006|1953-04-20|Anneke|Preusig|F|1989-06-02
10007|1957-05-23|Tzvetan|Zielinski|F|1989-02-10
10008|1958-02-19|Saniya|Kalloufi|M|1994-09-15
10009|1952-04-19|Sumant|Peac|F|1985-02-18
10010|1963-06-01|Duangkaew|Piveteau|F|1989-08-24

SQL练习题55(中等):

select *
from employees
limit 5,5;

知识点

limit 偏移量,取数量
--其中的偏移量含义:隔多少条数据
--取数量的含义:展示多少条数据
--公式
limit 每页数量*(页数-1,取数量
### 使用 OFFSET 和 FETCH NEXT 实现分页查询SQL Server 中,可以使用 `OFFSET` 和 `FETCH NEXT` 语法实现分页查询。该方法允许跳过指定数量的,然后返回一定数量的结果[^1]。例如,每显示 5 数据,查询第 2 数据,可以跳过前 5 ,然后取接下来的 5 记录。 以下是实现该逻辑的 SQL 语句: ```sql SELECT * FROM employees ORDER BY emp_no OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY; ``` 该查询会按照 `emp_no` 排序后跳过前 5 记录,然后取接下来的 5 记录,从而实现功能[^3]。 --- ### 使用 ROW_NUMBER() 实现分页查询 另一种方法是使用 `ROW_NUMBER()` 函数为每一配一个号,然后根据号筛选出指定范围的数据。这种方法适用于 SQL Server 的早期版本,尤其是不支持 `OFFSET` 和 `FETCH NEXT` 的环境。 以下是实现该逻辑的 SQL 语句: ```sql SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY emp_no) AS row_num FROM employees ) AS ranked_employees WHERE row_num BETWEEN 6 AND 10; ``` 该查询首先为 `employees` 中的每一配一个基于 `emp_no` 排序的号,然后筛选出号在 6 到 10 范围内的记录,从而获取第 2 数据[^4]。 --- ### 分页查询的性能考虑 在实际应用中,分页查询的性能会受到数据量和索引的影响。对于大型数据,建议对排序字段(如 `emp_no`)建立索引,以加快查询速度。此外,使用 `OFFSET` 和 `FETCH NEXT` 通常比 `ROW_NUMBER()` 更高效,尤其是在数据量较大的情况下[^4]。 --- ### 总结 SQL Server 提供了多种实现分页查询的方法,包括 `OFFSET` 和 `FETCH NEXT` 以及 `ROW_NUMBER()`。对于每 5 、查询第 2 的需求,可以通过跳过前 5 并获取接下来的 5 数据实现。两种方法各有适用场景,选择时需考虑数据库版本和性能需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值