`
zgqynx
  • 浏览: 1370902 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle与DB2、MySQL取前10条记录的对比<转>

阅读更多
原文:http://tech.ccidnet.com/art/1105/20080105/1332111_1.html
Oracle与DB2、MySQL取前10条记录的对比 (1)
发布时间:2008.01.07 09:16     来源:赛迪网    作者:10027

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;


(1) 取前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;


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


(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
分享到:
评论

相关推荐

    jdbc数据库连接所需的jar包驱动、mysql、oracle、db2

    本知识点将详细介绍如何使用JDBC与MySQL、Oracle、DB2等数据库进行连接,并涉及所需的JAR包驱动。 首先,JDBC是一个Java API,允许Java应用程序与各种类型的数据库进行交互。为了实现这一功能,我们需要对应的...

    Linux环境数据库管理员指南

    DB2 173&lt;br&gt;6.3.1 进行安装 174&lt;br&gt;6.3.2 检验安装 180&lt;br&gt;6.4 配置Control Center 182&lt;br&gt;6.5 安装DB2客户机 184&lt;br&gt;6.6 配置DB2客户机与DB2服务器通信 188&lt;br&gt;6.7 小结 194&lt;br&gt;6.8 常见问答 195&lt;br&gt;第7章 在Linux...

    Terac Miracle v2.0

    &lt;br&gt;Support databases like HSQLDB, MySQL, PostgreSQL, Oracle, DB2 etc. &lt;br&gt;Multi-languages(English/Chinese...) &lt;br&gt;Fully customizable templates &lt;br&gt;Categories &lt;br&gt;Comments &lt;br&gt;Files upload &lt;br&gt;RSS ...

    如何连接MySQL-Oracle数据库

    jdbc:mysql://&lt;machine_name&gt;:&lt;port&gt;/&lt;dbname&gt; ``` 其中: - `&lt;machine_name&gt;` 是数据库服务器的主机名或 IP 地址。 - `&lt;port&gt;` 是 MySQL 服务监听的端口,默认通常是 3306。 - `&lt;dbname&gt;` 是要连接的数据库...

    SqlDir6 pro source

    servers: Centura (formerly, Gupta) SQLBase Server &lt;br&gt;IBM DB2 Universal Database &lt;br&gt;Informix Server &lt;br&gt;Interbase/Firebird Server &lt;br&gt;Microsoft SQL Server &lt;br&gt;MySQL Server &lt;br&gt;Oracle Database Server ...

    db2db配置详细说明

    &lt;Driver&gt;oracle.jdbc.driver.OracleDriver&lt;/Driver&gt; &lt;Url&gt;jdbc:oracle:thin:@10.16.1.88:1521:nwom&lt;/Url&gt; &lt;User&gt;custcare&lt;/User&gt; &lt;Password&gt;custcare&lt;/Password&gt; &lt;/DBInfo&gt; ``` - **id**:唯一标识符,用于在...

    开发助手系列之——多功能查询分析器

    1.&lt;br&gt;支持多数据库,如db2、ms-sqlserver、oracle(准备在下个版本加入access和mysql,由于最近写这个实在是累,等找到工作再增加预告的功能吧);&lt;br&gt;2.&lt;br&gt;支持语法高亮显示,由于采用的是QCTextEditor(一个比较...

    hahaCMS网站内容管理程序

    理论上支持MySQL、SQLite、Oracle、FreeTDS、Microsoft SQL Server、Sybase、IBM DB2、ODBC、PostgreSQL&lt;br&gt;14、无缝整合phpwind与Discuz,更多论坛接口正在紧加开发中&lt;br&gt;15、带有用户插件接口,提供更方便的第三方...

    数据迁移工具DB2DB和mysql to oracle

    迁移过程中,需要关注两个系统之间的数据类型差异,例如MySQL的VARBINARY与Oracle的BLOB,或者MySQL的ENUM与Oracle的CHAR/VARCHAR2。此外,还需要考虑事务处理、触发器、存储过程等高级特性在迁移过程中的转换,以及...

    万能数据库查询分析器《DB 查询分析器》 1.0

    &lt;br&gt; &lt;br&gt; 5、提供了快速生成某些常用SQL语句(如多种数据库系统的前N条记录)的功能。&lt;br&gt; &lt;br&gt; 6、提供了执行多条SQL语句的支持;&lt;br&gt; &lt;br&gt; 7、提供了对执行的一批SQL语句中每条SQL语句执行时间的记录,使用户更...

    X3BLOG v0.7.5.0

    X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言ASP.NET(C#) &lt;br&gt;&lt;br&gt;2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\ORACLE\MYSQL\DB2\...

    X3BLOG 单用户版 FOR ACCESS 1.0beta 源代码

    BLOG&lt;br&gt;&lt;br&gt; X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言之一ASP.NET(C#) 2.0编写,支持多种数据库,包括SQLSERVER2000\SQLSERVER2005\ORACLE\MYSQL\...

    oracle+mysql+db2 驱动包Jar

    总结来说,"JDBC_oracle+mysql+db2"这个压缩包包含了与Oracle、MySQL和DB2数据库交互所需的JDBC驱动,它们是Java开发者连接这三种数据库的重要工具。正确理解和使用这些驱动,能够帮助开发者高效地实现数据库操作,...

    Oracle,DB2,mysql的驱动以及用Java连接数据库的方法

    Oracle、DB2和MySQL是三种非常流行的数据库管理系统,广泛应用于企业级应用、数据分析以及互联网服务。Java作为一种多平台支持的编程语言,常常被用来与这些数据库进行交互。本篇将详细介绍这三种数据库的驱动以及...

    Activiti工作流基础教程

    它支持多种数据库,包括h2、mysql、oracle和db2等。可以通过maven依赖引入Activiti运行所需的jar包。开发环境推荐使用Eclipse 3.7或以上版本,以及MyEclipse 8.6版本。 接下来,需要安装流程设计器(Activiti ...

    JBOSS数据库配置大全.pdf

    &lt;url&gt;jdbc:mysql://&lt;host&gt;:&lt;port&gt;/&lt;database&gt;&lt;/url&gt; &lt;user-name&gt;&lt;username&gt;&lt;/user-name&gt; &lt;password&gt;&lt;password&gt;&lt;/password&gt; ``` - `&lt;host&gt;`: MySQL所在计算机的主机名。 - `&lt;port&gt;`: MySQL服务端口号,默认为...

    mybatis物理分页插件-GbatisDialect

    -- value="mssql|oracle|mysql|db2" --&gt; &lt;properties&gt; &lt;property name="dialect" value="mssql" /&gt; &lt;/properties&gt; &lt;plugins&gt; &lt;plugin interceptor="com.gian.commons.dialect.PaginationInterceptor" /&gt; ...

    DB2和ORACLE_应用开发差异比较

    - **重做日志文件(RedoLogFiles)**与**事务日志文件(TransactionLogFiles)**:Oracle的重做日志记录了所有修改数据库的事务,DB2使用事务日志记录类似的信息。 - **PL/SQL与SQL/PL**:Oracle使用PL/SQL作为过程...

    oracle、db2、informix数据库的jdbc包

    这个"oracle、db2、informix数据库的jdbc包"包含的就是这三个数据库的JDBC驱动程序,使得Java开发者能够方便地与这些数据库进行交互。 1. **Oracle JDBC驱动**:Oracle数据库提供了多种JDBC驱动类型,包括 Thin、...

Global site tag (gtag.js) - Google Analytics