Oracle选取有限条数据记录
Oracle rownum 用法
rownum是加在结果集上的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先有结果集后有rownum)。它总是从1开始排起的。
例如,选取前5行:select rownum,ename from emp where rownum <= 5;
rownum 不能接 > 号和 >= 号,只能使用<=,选取行范围时使用子查询:
select r,rownum,ename from (select rownum r, ename from emp) where r>=5 and r <=10;
这里比较了r,rownum的不同,就可以看到使用子查询选择行范围时,要把rownum转换成实列。
求最近雇用的10名员工:
SELECT rownum,empno,ename,hiredate
FROM (SELECT *
FROM emp
ORDER BY hiredate DESC)
WHERE ROWNUM <= 10;
本语句的执行顺序是:先排序再取10条行。
SELECT rownum,empno,ename,hiredate
FROM emp
WHERE ROWNUM <= 10
ORDER BY hiredate DESC;
本语句的执行顺序是:先取10条行再排序。
注意:本语句的执行顺序和order by列有关,如果order by列是主键,就先排序,再取10条(速度比第一种语句快);否则就是先取10条再排序,此时结果就与要求不一样了,所以第二种写法一定要在排序列是主键的情况下才能保证结果正确。
使用rownum求当月的所有天数:
SELECT TRUNC (SYSDATE, 'MM') + ROWNUM - 1
FROM DUAL
CONNECT BY ROWNUM <= TO_NUMBER (TO_CHAR (LAST_DAY (SYSDATE), 'dd'))
推荐阅读
-
Oracle选取有限条数据记录
-
从数据库表中随机获取n条记录 博客分类: 数据库mysql
-
笔记:Oracle查询重复数据并删除,只保留一条记录 博客分类: oracle oracleOracle查询重复
-
笔记:Oracle查询重复数据并删除,只保留一条记录 博客分类: oracle oracleOracle查询重复
-
Oracle查询数据库中所有表的记录数
-
用exp导出oracle数据库中没有记录的空表
-
oracle复合数据类型学习五——pl/sql记录
-
数据库select构造一条常量记录和多条常量记录
-
oracle数据库排序后获取第一条数据
-
oracle:查询各组最新的一条数据(按照某个条件)