select *from (select a1.*,rownum rwn from (select * from emp) a1 where rownum<=10) where rwn>=6;為什么一定要把rownum<=10放在前面,把rwn放在后面,互換為什么查詢不了?還有就是前面要用rownum,而后面一定要用rwn才可以查詢出來?
2 回答

喵喔喔
TA貢獻1735條經驗 獲得超5個贊
rownum是oracle預處理字段,默認標序是1,只有記錄集已經滿足條件后才會進行后續編號。由于第一條記錄rownum默認是1,而你的條件是rownum>=6 對第一條記錄比較它的rownum肯定不大于6 所以不滿足條件 oracle舍棄第一條記錄將數據庫第二條記錄標序為1再進行比較 肯定都不滿足rownum>=6 這樣循環也就是說由于沒有記錄滿足rownum>=6所以記錄一直被舍棄,rownum一直是1 。
排序方法:
select * from (
select a1.*, rownum rwn from emp a1 where rownum <=10
) where rwn >= 6;
或者
select * from (
select qx.*,row_number() over(order by qx.empno) rwn from emp qx
) where rwn between 6 and 10
添加回答
舉報
0/150
提交
取消