MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm=1001.2014.3001.5502
比如现在有一张表emp有15条数据
我想每页只显示5条数据,分3页,这样看起来简捷一些,我该怎么实现呢
语法格式:
select */列名 from 表名 limit 初始位置, 每页行数;
初始位置:表示从哪里开始查询,是可选项,可以不写, 如果不写,默认值是0,表示从第1条记录开始, 如果写了,比如是10,表示从第11条开始
每页行数:表示每页要查询的记录行数
案例:查询emp表的前5条记录
mysql> select * from emp limit 0, 5;
+-------+--------+----------+------+------------+---------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+----------+------+------------+---------+------+--------+
| 7210 | tianni | clerk | 7902 | 1980-04-20 | 500.00 | 100 | 60 |
| 7369 | smith | clerk | 7902 | 1980-12-17 | 800.00 | 1000 | 20 |
| 7499 | allen | salesman | 7698 | 1981-02-20 | 1600.00 | 300 | 30 |
| 7521 | ward | salesman | 7698 | 1982-02-22 | 1250.00 | 500 | 30 |
| 7566 | jones | manager | 7839 | 1980-04-02 | 3500.00 | NULL | 20 |
+-------+--------+----------+------+------------+---------+------+--------+
5 rows in set (0.00 sec)
mysql> select * from emp limit 5;
+-------+--------+----------+------+------------+---------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+----------+------+------------+---------+------+--------+
| 7210 | tianni | clerk | 7902 | 1980-04-20 | 500.00 | 100 | 60 |
| 7369 | smith | clerk | 7902 | 1980-12-17 | 800.00 | 1000 | 20 |
| 7499 | allen | salesman | 7698 | 1981-02-20 | 1600.00 | 300 | 30 |
| 7521 | ward | salesman | 7698 | 1982-02-22 | 1250.00 | 500 | 30 |
| 7566 | jones | manager | 7839 | 1980-04-02 | 3500.00 | NULL | 20 |
+-------+--------+----------+------+------------+---------+------+--------+
5 rows in set (0.00 sec)
这两种方式都行
案例:查询emp表中,从第10行开始,共3条结果
(相当于:每页显示3条,目前是第4页)
第1页(1 2 3) 第2页(4 5 6) 第3页(7 8 9) 第4页(10 11 12)
查上一页:
练习:查询student表,学员编号(sid)、姓名(sname)、分数(score),每页显示5条,查询第2页
总结:
在开发时,SQL能够查询出结果只能证明语法是正确的;
但是结果的内容可能和预期不符,属于SQL逻辑、关系错误!
写SQL既要语法正确,也要逻辑正确!否则就是Bug