欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle选取有限条数据记录  

程序员文章站 2024-03-22 21:31:28
...

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'))