`
hfkiss44
  • 浏览: 48668 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

各种主流数据库的分页写法 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条  然后再倒叙  首页就不用说了 
---------sybase没用过 还有其他数据库 清大家补齐  ------------------------

每天记录一点  好记星不如烂笔头
3
3
分享到:
评论
3 楼 hfkiss44 2010-01-11  
你指的是用rpg查询?  as400 5.3版本之前确实是没有rownumber的  之后我没有使用过
db2里面确实是有rownumber()的
2 楼 terryshao 2010-01-11  
AS400里面是可以装一个SQL插件的,在里面可以直接用SQL语句,另AS400里面是有Rownumber的,好像是Row_num,可以上新儒网查查
1 楼 liveHappy 2010-01-11  
looked

相关推荐

Global site tag (gtag.js) - Google Analytics