首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 
设为首页
加入收藏
联系我们
热门关键字: .net应用  操作系统  Dreamweaver  WinRAR  网络推广
高级搜索
您当前的位置: 主页>数据库>基础常识>DB2、oralce、mysql数据库取前十条记录代码
DB2、oralce、mysql数据库取前十条记录代码
来源: 发布时间:2007-12-30 发布人: 浏览: 人次   字体: [ ]  

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


case 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


case 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

case 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

 oralce 例子

 1. 最好还是利用分析函数
row_number() over ( partition by col1 order by col2 )
比如想取出100-150条记录,按照tname排序

select tname,tabtype from (
select tname,tabtype,row_number() over ( order by tname ) rn from tab
)
where rn between 100 and 150;

2. 直接使用rownum 虚列
select tname,tabtype from (
select tname,tabtype,rownum rn from tab where rownum <= 150
)
where rn >= 100;
使用序列不能基于整个记录集合进行排序,如果指定了order by子句,排序的的是选出来的记录集的排序.

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 id,name,RANK() over ( order by id ) case1,DENSE_RANK() over ( order by id ) case2,row_number() over ( order by id ) case3 from mynumber;

cas1:  取前10条不同id记录,如果最后1条记录的ID 还有相同的,都要取出来。

select id,name from mynumber where id in (select id from (select distinct id from mynumber) tt where rownum<=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 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) tt where case1 between 5 and 10;

case 2:取前10条记录,如果第10条记录的ID 还有相同的,都要取出来。

select * from mynumber where id in(select id from mynumber where rownum <=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 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) tt where case2 between 5 and 10;


case 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;

Mysql 例子

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


相 关 文 章   发布商链接
·祥解磁盘 I/O 性能 对数据库的影响
·SQL中IN,NOTIN,EXISTS,NOT EXISTS的...
·软件开发之数据库设计技巧大放送
·速学数据库链路的建立及其使用
·如何查找数据库中某一字段所在的表名...
·两个实现删除数据库字段中汉字或字符...
·超全超强SQL语法大全
·sql语句使用内嵌视图与临时表示例
·SET IDENTITY_INSERT的用法
·SQL数据库面试题目及其答案
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·两个实现删除数据库字段中汉...
·如何查找数据库中某一字段所...
·速学数据库链路的建立及其使...
·软件开发之数据库设计技巧大...
·SQL中IN,NOTIN,EXISTS,NOT EX...
·SQL语法中常用字符串函数大全
·设计一个用户,角色,功能三...
·sql语句实现根据月分打印月历
·SQL数据库面试题目及其答案
·SET IDENTITY_INSERT的用法
·sql语句使用内嵌视图与临时表
热 门 文 章
·SET IDENTITY_INSERT的用法
·SQL数据库面试题目及其答案
·超全超强SQL语法大全
·SQL中IN,NOTIN,EXISTS,NOT EX...
·SQL语法中常用字符串函数大全
·祥解磁盘 I/O 性能 对数据库...
·sql语句使用内嵌视图与临时表...
·sql语句实现根据月分打印月历...
·设计一个用户,角色,功能三...
·软件开发之数据库设计技巧大...
·如何查找数据库中某一字段所...
·速学数据库链路的建立及其使...
·两个实现删除数据库字段中汉...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .