oracle中的分页
来源:互联网 发布:知乎 语音识别api 编辑:程序博客网 时间:2024/04/30 01:09
如何在Oracle里实现类似SQL Server里top语法的查询,例如查询结果集的前10条,查询结果集的第10到第20条?
使用子查询,并使用oracle的函数rownum,举例如下:
有一个用户表如下:
User ( UserID NUMBER ( 10 ) NOT NULL, Status NUMBER ( 3 ), Email VARCHAR2 ( 256 ) NOT NULL, UserName VARCHAR2 ( 256 ), Password VARCHAR2 ( 256 ), CONSTRAINT PK_User_1 PRIMARY KEY (UserID))要求查询状态为1的按姓名排序的前10个用户,SQL如下:
select * from (select a.*,rownum rn from User a where a.Status=1 order by a.UserName) where rn<=10
做法就是将我们的查询放到一个子查询里,同时多查询一个结果,就是行数,使用rownum
然后在外面的查询里对行数做where条件,根据需要查询不同的结果集,如果是前10条就是rn<=10,如果是10~20条就是rn<20 and rn>=10,等等
执行上述SQL查询会发现取出的10个结果未必是按UserName排序后的前10条,这是因为oracle的rownum函数实际产生的是一个伪列,其行号并不是完全按照结果集的顺序,具有一定的随机性,所以需要对上述语句做一些修改,使用row_number()函数,如下:
select * from (select a.*,row_number() over (order by a.UserName) rn from User a where a.Status=1) where rn<=10
- oracle中的分页
- Oracle中的分页
- oracle中的分页
- oracle中的分页显示
- Oracle中的数据分页
- oracle中的分页显示
- oracle中的分页显示
- oracle中的分页
- oracle中的ROWID与分页
- 关于oracle分页中的rownum
- Oracle中的sql分页句子
- oracle 中的分页查询语句
- Oracle中的分页存储过程
- oracle中的rownum及分页
- Oracle中的分页存储过程
- Oracle数据库中的分页--rownum
- SQL Server 与 Oracle中的记录分页
- Oracle,SQLServer,MySQL数据库中的分页
- JavaScript版仿Windows扫雷(源码)
- 日记
- 波松分酒问题 C++求最优解.
- windows中给Berkeley DB 打补丁
- 关于ntfs和内核问题
- oracle中的分页
- 关于ntfs和内核问题(转载)
- slackware10.0汉化实践
- 难忘的时刻
- CCTV-5雅典奥运会转播日程
- Linux 主要服务对象应是政府和企业
- 中国将成亚太 Linux 枢纽
- Linux 并没有对桌面 Windows 构成威胁
- 得到光标在文本域中的位置