各种主流数据库的分页写法

mysql数据库:
select * from table LIMIT 5,10; #返回第6-15行数据
select * from table LIMIT 5; #返回前5行
select * from table LIMIT 0,5; #返回前5行
------------------------------------------------------------------
sqlserver数据库:
SELECT TOP 10 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 20 id
FROM TestTable
ORDER BY id))
ORDER BY ID

---------------------------------------------------------------
oracle数据库:
select ID from
   (
   select ID , rownum as con from
   (
   select ID from TestSort order by ID
   )
   where rownum <= 3 /*N值*/
   )
   where con >= 2; /*M 值*/

select * from (select rownum,name from table where rownum <=endIndex )
where rownum > startIndex


------------------------------------------------------
db2数据库
SELECT * FROM (Select 字段1,字段2,字段3,rownumber() over(ORDER BY 排序用的列名 ASC) AS rn from 表名) AS a1 WHERE a1.rn BETWEEN 10 AND 20

以上表示提取第10到20的纪录

select * from (select rownumber() over(order by id asc ) as rowid from table where rowid <=endIndex )
where rowid > startIndex

------------------------------------------------------
db2 as400

db2 as400没有提供像db2和oracle的rownumber() 函数 不能像其他数据库那样分页 所以分页的时候需要分页表需要有一个可供排序的字段 尽量唯一 然后按次字段排序 按需求取一定量的数据出来
( FETCH FIRST 20 ROWS ONLY 假定取20条的写法) 然后需要记录上次查询的字段值供上一页使用 并记录本次最后所取出的字段值 供下一页使用 末页需要倒叙所有
数据 然后取前20条 然后再倒叙 首页就不用说了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值