`
javaliujie
  • 浏览: 58425 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

DB2 oralce mysql 取前十条记录对比

阅读更多
Db2 例子
Sql代码 复制代码
  1. create table mynumber(id int,name varchar(10))   
  2. insert into mynumber values(1,'no1')   
  3. insert into mynumber values(2,'no2')   
  4. insert into mynumber values(3,'no3')   
  5. insert into mynumber values(4,'no4')   
  6. insert into mynumber values(5,'no5')   
  7. insert into mynumber values(5,'no6')   
  8. insert into mynumber values(6,'no7')   
  9. insert into mynumber values(7,'no8')   
  10. insert into mynumber values(8,'no9')   
  11. insert into mynumber values(9,'no10')   
  12. insert into mynumber values(9,'no11')   
  13. insert into mynumber values(9,'no12')   
  14. insert into mynumber values(10,'no13')   
  15. insert into mynumber values(10,'no14')   
  16. insert into mynumber values(10,'no15')   
  17. insert into mynumber values(11,'no16')   
  18. insert into mynumber values(12,'no17')   
  19. insert into mynumber values(13,'no18')   
  20.   
  21.   
  22. 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  
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 还有相同的,都要取出来。
Sql代码 复制代码
  1. select * from mynumber where id in(select distinct id from mynumber fetch first 10 rows only)   
  2.   
  3. 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   
  4. 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  
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 还有相同的,都要取出来。

Sql代码 复制代码
  1. select * from mynumber where id in(select id from mynumber fetch first 10 rows only)   
  2.   
  3. 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   
  4. 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  
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条记录

Sql代码 复制代码
  1. select id from mynumber fetch first 10 rows only  
  2.   
  3. 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   
  4. 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  
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. 最好还是利用分析函数
Sql代码 复制代码
  1. row_number() over ( partition by col1 order by col2 )  
row_number() over ( partition by col1 order by col2 )
比如想取出100-150条记录,按照tname排序

Sql代码 复制代码
  1. select tname,tabtype from (   
  2. select tname,tabtype,row_number() over ( order by tname ) rn from tab   
  3. )   
  4. where rn between 100 and 150;  
select tname,tabtype from (
select tname,tabtype,row_number() over ( order by tname ) rn from tab
)
where rn between 100 and 150;


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

Sql代码 复制代码
  1. create table mynumber(id int,name varchar(10));   
  2. insert into mynumber values(1,'no1');   
  3. insert into mynumber values(2,'no2');   
  4. insert into mynumber values(3,'no3');   
  5. insert into mynumber values(4,'no4');   
  6. insert into mynumber values(5,'no5');   
  7. insert into mynumber values(5,'no6');   
  8. insert into mynumber values(6,'no7');   
  9. insert into mynumber values(7,'no8');   
  10. insert into mynumber values(8,'no9');   
  11. insert into mynumber values(9,'no10');   
  12. insert into mynumber values(9,'no11');   
  13. insert into mynumber values(9,'no12');   
  14. insert into mynumber values(10,'no13');   
  15. insert into mynumber values(10,'no14');   
  16. insert into mynumber values(10,'no15');   
  17. insert into mynumber values(11,'no16');   
  18. insert into mynumber values(12,'no17');   
  19. insert into mynumber values(13,'no18');   
  20.   
  21.   
  22. 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;  
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;


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

Sql代码 复制代码
  1. select id,name from mynumber where id in (select id from (select distinct id from mynumber) tt where rownum<=10);   
  2.   
  3. 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;   
  4. 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;  
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 还有相同的,都要取出来。

Sql代码 复制代码
  1. select * from mynumber where id in(select id from mynumber where rownum <=10);   
  2.   
  3. 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;   
  4. 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;  
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条记录

Sql代码 复制代码
  1. select id,name from mynumber where rownum <=10;   
  2. select id,name from (select id,name,rownum rn from mynumber where rownum <= 10 ) where rn >= 5;   
  3.   
  4. 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;   
  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 between 5 and 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 例子

Sql代码 复制代码
  1. select id from mytable order by update_date desc limit 0,10  
 select id from mytable order by update_date desc limit 0,10

limit用法:

select * from tablename limit [offset],(rows)
注释:offset为偏移量
rows为要取出的记录条数
分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle 甲骨文 获得最高认证级别的ISO标准安全认证,性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。但价格不菲 大型企业 db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2...

    SQL语句生成及分析器(中文绿色)

    3.1.2 特殊语法,记录条数限定Top(MS_SQL),Rownum(Oracle), Limit(MySQL),Set RowCount(Sybase)) 3.1.3 字段表达式或者计算字段 3.2 选择表 (From) 3.3 条件筛选 (Where) 3.4 分组 (Group By) 3.5 组内...

    sql语句生成与分析器.rar

    3.1.2 特殊语法,记录条数限定Top(MS_SQL),Rownum(Oracle), Limit(MySQL),Set RowCount(Sybase)) 3.1.3 字段表达式或者计算字段 3.2 选择表 (From) 3.3 条件筛选 (Where) 3.4 分组 (Group By) 3.5 组内...

    DBTSearch软件开发包

    * DBTSearch兼容当前所有厂商的数据库系统,其中SQL Server, Oracle, MySQL,DB2等; * DBTSearch可以按照任意指定字段的排序,支持指定字段的搜索,也可以搜索多个字段,以及复杂表达式的综合搜索; * ...

    ODBC万能查询器,DB 查询分析器(经典)

    3、提供了对所有数据库包括Oracle、Sybase、DB2、Informix、MYSQL、MS SQL SERVER、Access、FoxPro的SQL语句进行词法分析,对关键字、函数等显示以不同的颜色,使用户更方便地发现输入SQL语句的错误,同时也便于用户...

    Visual SQLTools 2012 Pro – 高效率SQL开发工具

    Visual SQLTools 2012 Pro - 是一套专业的数据库及SQL开发工具,基于.NET Framework 和.NET Data Provider技术开发,历时十年精心打造而成,支持Oracle,SQLServer,MySQL,DB2,Sybase,PostgreSQL,Access 7种常用数据库...

    mybatis-pagination:mybatis 分页插件

    Mybatis PaginationMybatis 的分页插件,支持Mysql、MSSQL、Oracle、MSSQL2005、Postgre SQL、DB2.在 的基础上实现如何使用其他为什么写这个插件Mybatis自带的分页实现,在数据量大的时候(通常在1w条以上),存在...

    经典全面的SQL语句大全

     14、说明:前10条记录 select top 10 * form table1 where 范围  15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,...

    php网络开发完全手册

    15.3.5 获得结果集中的某一条记录 244 15.3.6 逐行获取结果集中的每一条 15.3.6 记录 245 15.3.7 结果集的分页 248 15.3.8 用户动态添加记录 249 15.3.9 用户动态更新记录 251 15.3.10 用户动态删除记录 253 15.4 ...

    VereORM至简持久层微架构

    lib/db2jcc4.jar //DB2 驱动 lib/jtds-1.2.jar //MS-SQL 驱动 lib/sqljdbc.jar //MS-SQL 驱动 lib/sqljdbc4.jar //MS-SQL 驱动 lib/mysql-connector-java-5.1.9.jar //MySQL 驱动 lib/ojdbc14.jar //Oracle ...

    安信通数据库审计系统.doc

    "2000条/秒 "4000条/秒 " "度: " " " " " "参考价"26万元 "32万 "30万元 "40万 " 产品硬件指标 产品功能: 支持数据库类型: Oracle、Informix、DB2、SQL-Server、Sybase、MySQL 支持其它协议: http、telnet、FTP ...

    数据库审计系统需求说明.docx

    3 协议支持 支持主流数据库: Oracle、SQLServer、Mysql、DB2 infomix、Sybase、CACH、 达梦、人大金仓、神舟 Oscar、南大通用 GBASE数据仓库teradata。 支持主流业务协议: TeInet、SMTP POP3 DCOM 4 审计内容 ...

    滴答表格企业版 5.1.2

    目前我们的数据 挖掘引擎支持Oracle、SQLServer、DB2、MySql、ACCESS等; 支持外部数据的导入导出 您只需要一条语句即可实现与其它应用程序的数据交互,包括PDF、EXCEL、CSV、图片,同时您还可以精确导入EXCEL文件...

    滴答表格专业版 4.2.2

    目前我们的数据挖掘引擎支持Oracle、SQLServer、DB2、MySql、ACCESS等; 7.支持外部数据的导入导出 您只需要一条语句即可实现与其它应用程序的数据交互,包括PDF、EXCEL、CSV、图片,同时您还可以精确导入EXCEL文件...

    asp.net知识库

    获取數据库表的前N条记录 几段SQL Server语句和存储过程 生成表中的数据的脚本 最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle编程的编码规范及命名规则 Oracle...

    可慧内容管理系统

    支持Mysql, MSsql, Access, DB2, Oracle, Postgres 等目前流行的大多数数据库。支持多数据库服务器联合支持,在几万人在线的超级网站运行时保证系统的速度和稳定性。 本系统经过3年的开发和实际使用,已经非常...

Global site tag (gtag.js) - Google Analytics