17,377
社区成员
发帖
与我相关
我的任务
分享
--getRowNum
SELECT ename,sal ,ROWNUM 行号 FROM emp ;
--问题的产生:行号不是依次排列的
--why?--行号是在ORDER BY之前的查询时就产生的
--相当于9527就是终生代号进了那个门就定下来了,而你查询的时候行号也定了也是这个道理。
SELECT ename,sal ,ROWNUM 行号 FROM emp ORDER BY sal ;
--查询雇员表的前3条记录
SELECT e.* FROM emp e WHERE ROWNUM<=3;
--查询后面的记录呢?而且也不知道最大rownum情况下
SELECT e.* FROM emp e WHERE ROWNUM>3(?)
--!记录为空,很怪。。
--解决:oracle中的rownum有个这样的定律(不知道叫不叫定律,自己定义的规律吧)
--当查询rownum>3的时候那么,由于rownum<3那3条记录不显示,后面的记录就会往上面移,是一个循环的过程。
--所以就导致你查询没得到记录。。
--3层循环可以解决此类问题
SELECT b.* FROM(
SELECT ROWNUM r,a.* FROM
(
SELECT * FROM emp ORDER BY empno DESC
)a
)b
WHERE r>=5 AND r<=10;