Oracle的分页查询

--1:无ORDER BY排序的写法。(效率最高)
--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!)

SELECT *
  FROM (SELECT ROWNUM AS rowno, t.*
          FROM emp t
         WHERE hire_date BETWEEN TO_DATE (‘20060501‘, ‘yyyymmdd‘)
                             AND TO_DATE (‘20060731‘, ‘yyyymmdd‘)
           AND ROWNUM <= 20) table_alias
 WHERE table_alias.rowno >= 10;

--2:有ORDER BY排序的写法。(效率最高)
--(经过测试,此方法随着查询范围的扩大,速度也会越来越慢哦!)

SELECT *
  FROM (SELECT tt.*, ROWNUM AS rowno
          FROM (  SELECT t.*
                    FROM emp t
                   WHERE hire_date BETWEEN TO_DATE (‘20060501‘, ‘yyyymmdd‘)
                                       AND TO_DATE (‘20060731‘, ‘yyyymmdd‘)
                ORDER BY create_time DESC, emp_no) tt
         WHERE ROWNUM <= 20) table_alias
 WHERE table_alias.rowno >= 10;

--3:无ORDER BY排序的写法。(建议使用方法1代替)
--(此方法随着查询数据量的扩张,速度会越来越慢哦!)

SELECT *
  FROM (SELECT ROWNUM AS rowno, t.*
          FROM k_task t
         WHERE flight_date BETWEEN TO_DATE (‘20060501‘, ‘yyyymmdd‘)
                               AND TO_DATE (‘20060731‘, ‘yyyymmdd‘)) table_alias
 WHERE table_alias.rowno <= 20 AND table_alias.rowno >= 10;

--TABLE_ALIAS.ROWNO  between 10 and 100;

--4:有ORDER BY排序的写法.(建议使用方法2代替)
--(此方法随着查询范围的扩大,速度会越来越慢哦!)

SELECT *
  FROM (SELECT tt.*, ROWNUM AS rowno
          FROM (  SELECT *
                  FROM k_task t
                   WHERE flight_date BETWEEN TO_DATE (‘20060501‘, ‘yyyymmdd‘)
                                         AND TO_DATE (‘20060531‘, ‘yyyymmdd‘)
                ORDER BY fact_up_time, flight_no) tt) table_alias
 WHERE table_alias.rowno BETWEEN 10 AND 20;

--5另类语法。(有ORDER BY写法)
--(语法风格与传统的SQL语法不同,不方便阅读与理解,为规范与统一标准,不推荐使用。)

WITH partdata AS
     (
        SELECT ROWNUM AS rowno, tt.*
          FROM (  SELECT *
                    FROM k_task t
                   WHERE flight_date BETWEEN TO_DATE (‘20060501‘, ‘yyyymmdd‘)
                                         AND TO_DATE (‘20060531‘, ‘yyyymmdd‘)
               ORDER BY fact_up_time, flight_no) tt WHERE ROWNUM <= 20)
SELECT *  FROM partdata WHERE rowno >= 10;

--6另类语法 。(无ORDER BY写法)

WITH partdata AS
     (
        SELECT ROWNUM AS rowno, t.*
          FROM k_task t
         WHERE flight_date BETWEEN TO_DATE (‘20060501‘, ‘yyyymmdd‘)
                              AND TO_DATE (‘20060531‘, ‘yyyymmdd‘)
           AND ROWNUM <= 20)
SELECT *  FROM partdata WHERE rowno >= 10;
时间: 2024-10-09 23:25:02

Oracle的分页查询的相关文章

Oracle中分页查询语句

Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.Oracle分分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE

Mysql与Oracle的分页查询比较

MySql分页查询语句 下列查询语句中m代表行数的索引默认从0开始类似于pl/sql中的游标0表示从第一条开始n表示向后查询多少条数据. 例如: select * from emp limit 2,3表示查询第三条数据到第六条数据(包前不包后)也就是第三条数据包括第三条数据不包括第六条数据 也就是 3, 4,5条记录 select * from buss_stu_info limit m,n; Oracle数据库分页查询 一层分页查询: 及时数据量足够大几乎也不会受到影响查询速率足够快,一般在写

Oracle之分页查询

Oracle之分页查询 Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句.ROWNUM <= 40和RN >= 21控制分页查询的每页的范围.

oracle 的分页查询与mysql 的分页查询

oracle 的分页查询: select * from (select o.*,rownum rn  from Persons o) where rn >40 and rn <=60 : mySQL 的分页查询: select o.*  from Persons o limit 40,20 ;              limit (偏移条数,数据条数) SQLServer :top  select top 4 * from order by hiredate      自注: 显示第一个到第

MySQL数据库分页查询,Oracle数据库分页查询,SqlServer数据库分页

DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `pass` varchar(255) NOT NULL, `sex` varchar(255) NOT NULL, `age` int(11) NOT NULL, `address` varchar(255) DEFAULT NULL, PRIMA

oracle的分页查询碰到的一个小问题

订单表.与订单信息表(多个订单信息列有同一个订单id) 查出全部订单以及其信息并依照订单分页 select * from( select a. * , (DENSE_RANK() OVER(ORDER BY id DESC)) AS numindex from( SELECT o. * , DENSE_RANK() OVER(ORDER BY o.id DESC) AS rn from order o ) a where rn <= 10 ) where numindex > 0 查出全部订单

Oracle数据库分页查询的几种实现方法

没有Sql Server有top那么好用,但是Oracle含有隐藏的rownum列可以灵活使用,使实现分页效果,pageSize默认10行 方法一: select * from test where id not in ( select id from test where rownum <= 10) and rownum <= 10 order by id /--此方法除去前10行数据,剩下的重新排序,选取前十行,相当于第二页显示 方法二: SELECT * from test where

Oracle分页查询语句的写法(转)

分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.Oracle分分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHER

转Oracle、MySql、SQLServer 数据分页查询

最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式: /* * sql:可以是单表的查询语句,也可以是多表的联合查询语句 * firstIndex:其实的索引 * pageSize:每页显示的记录数 */ select o.* from (sql) o limit firstIndex,pageSize