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

--------------------------------------------
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条  然后再倒叙  首页就不用说了 

你可能感兴趣的:(oracle,mysql,db2)