mysql和oracle分页语句,mysql、postgre和oracle分页

数据库表

40c3a9a38d8e

student表

mysql分页

分页语句1: limit n 不能设置偏移量——每次扫描n条数据,效率高

查询第一页:SELECT * FROM student [WHERE id > 5*0] LIMIT 5;

40c3a9a38d8e

查询结果

若想查看第二页怎么办呢?

可以将 where 条件中 id 的值设为变量,作为偏移量

SELECT * FROM student WHERE id > 5*1 LIMIT 5;

40c3a9a38d8e

查询结果

分页语句2: limit m,n——每次扫描 m+n 条数据,效率低

查询第一页:SELECT * FROM student LIMIT 0,5;

40c3a9a38d8e

查询结果

查询第二页:SELECT * FROM student LIMIT 5,5;

40c3a9a38d8e

查询结果

分页语句3:limit n offset m 等同于 limit m,n——每次扫描m+n条数据,效率低

查询第一页:SELECT * FROM student LIMIT 5 OFFSET 0;

查询第二页:SELECT * FROM student LIMIT 5 OFFSET 5;

查询结果与 limit m,n 查询结果一致

postgre分页

分页语句1:limit n

查询第一页:SELECT * FROM student [WHERE id > 5*0] LIMIT 5;

查询第二页:SELECT * FROM student WHERE id > 5*1 LIMIT 5;

分页语句2:limit n offset m

查询第一页:SELECT * FROM student LIMIT 5 OFFSET 0;

查询第二页:SELECT * FROM student LIMIT 5 OFFSET 5;

注意:postgre不支持limit m,n

oracle分页

oracle中没有 limit 关键字,只能通过 rownum 与子查询联合使用控制分页

第一种分页方式:minus 和 rownum 连用

查询第一页:

SELECT * FROM STUDENT WHERE ROWNUM <= 5*1 MINUS

SELECT * FROM STUDENT WHERE ROWNUM <= 5*0;

查询第二页:

SELECT * FROM STUDENT WHERE ROWNUM<=5*2 MINUS

SELECT * FROM STUDENT WHERE ROWNUM<=5*1;

思路:先查询出需要的所有数据行数,在查询需要显示的行数

查询第一页:

SELECT * FROM (SELECT s.*, ROWNUM rn FROM STUDENT s WHERE ROWNUM <= 5*1) WHERE rn > 5*0;

查询第二页:

SELECT * FROM (SELECT s.*, ROWNUM rn FROM STUDENT s WHERE ROWNUM <= 5*2) WHERE rn > 5*1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值