赛迪网 > IT技术 数据库 > DB2开发者园地
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Oracle与DB2、MySQL取前10条记录的对比 (2)

发布时间:2008.01.07 09:16     来源:赛迪网    作者:10027

(3)取前10条记录

select id,name from mynumber 
where rownum <=10;
select id,name from 
(select id,name,rownum rn from 
mynumber where rownum <= 10 ) where rn >= 5;

select * from (select id,name,RANK() 
over ( order by id ) case1,DENSE_RANK() 
over ( order by id ) case2,row_number() 
over ( order by id ) case3 from mynumber) 
tt where case3<=10;
select * from (select id,name,RANK() 
over ( order by id ) case1,DENSE_RANK() 
over ( order by id ) case2,row_number() 
over ( order by id ) case3 from mynumber) 
tt where case3 between 5 and 10;

Db2示例

create table mynumber(id int,name varchar(10))
insert into mynumber values(1,'no1')
insert into mynumber values(2,'no2')
insert into mynumber values(3,'no3')
insert into mynumber values(4,'no4')
insert into mynumber values(5,'no5')
insert into mynumber values(5,'no6')
insert into mynumber values(6,'no7')
insert into mynumber values(7,'no8')
insert into mynumber values(8,'no9')
insert into mynumber values(9,'no10')
insert into mynumber values(9,'no11')
insert into mynumber values(9,'no12')
insert into mynumber values(10,'no13')
insert into mynumber values(10,'no14')
insert into mynumber values(10,'no15')
insert into mynumber values(11,'no16')
insert into mynumber values(12,'no17')
insert into mynumber values(13,'no18')

select * from (select id,name,RANK() over 
( order by id ) case1,DENSE_RANK() over 
( order by id ) case2,row_number() over 
( order by id ) case3 from mynumber) as tt where case1<=10

(1) 取前10条不同id记录,假如最后1条记录的ID依然有相同的,那么全部取出来。

select * from mynumber where id in
(select distinct id from mynumber fetch first 10 rows only)

select * from (select id,name,RANK() 
over ( order by id ) case1,DENSE_RANK() 
over ( order by id ) case2,row_number() 
over ( order by id ) case3 from mynumber) 
as tt where case1<=10
select * from (select id,name,RANK() 
over ( order by id ) case1,DENSE_RANK() 
over ( order by id ) case2,row_number() 
over ( order by id ) case3 from mynumber) 
as tt where case1 between 5 and 10

(2)取前10条记录,假如第10条记录的ID 还有相同的,那么全部取出来。

select * from mynumber where id in
(select id from mynumber fetch first 10 rows only)

select * from (select id,name,RANK() 
over ( order by id ) case1,DENSE_RANK() 
over ( order by id ) case2,row_number() 
over ( order by id ) case3 from mynumber) 
as tt where case2<=10
select * from (select id,name,RANK() 
over ( order by id ) case1,DENSE_RANK() 
over ( order by id ) case2,row_number() 
over ( order by id ) case3 from mynumber) 
as tt where case2 between 5 and 10

(3)取前10条记录

select id from mynumber fetch first 10 rows only

select * from (select id,name,RANK() over 
( order by id ) case1,DENSE_RANK() over 
( order by id ) case2,row_number() over 
( order by id ) case3 from mynumber) as tt where case3<=10
select * from (select id,name,RANK() 
over ( order by id ) case1,DENSE_RANK() 
over ( order by id ) case2,row_number() 
over ( order by id ) case3 from mynumber) 
as tt where case3 between 5 and 10

Mysql示例:

select id from mytable order by update_date desc limit 0,10

(责任编辑:卢兆林)

<<上一页 1 2


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 电子商务盈利新招:垂直化渠道管理新趋势
· 互联网加速蜕变 运营商进军搅动市场格局
· 08 IT技术风起云涌 专访 ITIL落地难在哪
· 视频加密保护解决方案 文档安全解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统