知识大全 使用三层嵌套正确实现Oracle分页
Posted 知
篇首语:知识的价值不在于占有,而在于使用。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 使用三层嵌套正确实现Oracle分页相关的知识,希望对你有一定的参考价值。
使用三层嵌套正确实现Oracle分页 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
原始记录
select t * t rowid from t_stu t
order by t s_birthday desc
返回
STU_ID S_NAME C_ID S_BIRTHDAY
S 李四 C
S 张 C
S 张 C
S 张 C
S 张 C
Oracle分页查询
第一种 两层嵌套查询(网上流行的一种错误)
select * from
(
select rownum r t * from t_stu t
)
where r beeen and order by s_birthday desc
返回
R STU_ID S_NAME C_ID S_BIRTHDAY
S 李四 C
S 张三丰 C
S 张三 C
说明 上面的结果可能与你的不一样 因为Oracle在没有order by的情况 是随机选取记录的 前 名的记录应该是
STU_ID S_NAME C_ID S_BIRTHDAY
S 李四 C
S 张 C
S 张 C
第二种 换用三层嵌套查询
select b * from
(select rownum r a * from
(select t * from t_stu t order by s_birthday desc )a
)b
where b r beeen and
返回
R STU_ID S_NAME C_ID S_BIRTHDAY
S 李四 C
S 张 C
S 张 C
正确!
所以Oracle分布查询一定要用三层嵌套 步骤如下
第三层 分页过滤
select b *
from (
第二层 给定行号
select rownum r a * from (
第一层 排序
select * from 表 order by 字段
) a
where rownum<=最大行
)b
where b r beeen 最小行 and 最大行
关键点 先排序 后给行号 两个步骤要分开!
为了程序的通用性 对任意数据集都能分页 利用子查询改为如下结构
第三层 分页过滤
select b *
from (
第二层 给定行号
select rownum r a * from (
第一层 排序
select * from (一个已经排序的数据集)
) a
where rownum<=最大行
)b
where b r beeen 最小行 and 最大行
如上面的查询改为
第三层 分页过滤
select b *
from (
第二层 给定行号
select rownum r a * from (
第一层 排序
select * from (select t * from t_stu t order by s_birthday desc)
) a
where rownum<=最大行
)b
where b r beeen 最小行 and 最大行
或者其它查询语句
第三层 分页过滤
select b *
from (
第二层 给定行号
select rownum r a * from (
第一层 排序
select * from (select t * from 新闻表 t order by 发贴日期 desc)
) a
where rownum<=最大行
)b
where b r beeen 最小行 and 最大行
原始数据数据脚本(请在命令窗口中粘贴以下语句即可)
prompt PL/SQL Developer import file
prompt Created on 年 月 日 星期一 by Administrator
set feedback off
set define off
prompt Dropping T_STU
drop table T_STU cascade constraints;
prompt Creating T_STU
create table T_STU
(
STU_ID CHAR( )
S_NAME CHAR( )
C_ID CHAR( )
S_BIRTHDAY DATE
S_SEX CHAR( )
)
;
prompt Disabling triggers for T_STU
alter table T_STU disable all triggers;
prompt Loading T_STU
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张三 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 李四 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张三丰 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
insert into T_STU (STU_ID S_NAME C_ID S_BIRTHDAY S_SEX)
values ( S 张 C to_date( dd mm yyyy ) null);
mit;
prompt records loaded
prompt Enabling triggers for T_STU
alter table T_STU enable all triggers;
set feedback on
set define on
cha138/Article/program/Oracle/201311/18196相关参考
知识大全 oracle分页详解(rownum与orderby)
Oracle的分页是通过rownum实现的 rownum是一个伪列是oracle系统自动为查询返回结果的每行分配的编号第一行为第二行为以此类推 一个oracle分页至少要包含三层(除非不用or
前台设计复制代码代码如下:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="pagingaspxcs"Inherits="五二一练习
Oracle数据完整性嵌套事务调用分析研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文分析一
Oracle数据的完整性的嵌套事务调用的研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为了
知识大全 Oracle数据库为了数据的完整性的嵌套事务调用的研究
Oracle数据库为了数据的完整性的嵌套事务调用的研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
oracle存储过程分页代码是怎么实现的我们来看下实验小编为您整理的方法吧! /*******存储过程分页代码**********/ 包头 createorreplacepackagepck
特殊需求下Oracle分页的加速 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle分页
Oracle三层认证计划 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作者亿书 O
前台Ext后台ibatis 数据库分页 ORACLE: SELECT*FROM(SELECT A*ROWNUMRNFROM表名AWHERE 字段名LIKE(%||
Oracle常见SQL分页实现方案 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Oracle