3 回答

TA貢獻1864條經驗 獲得超2個贊
SELECT * from
(
select m.*, rownum r
from maps006 m
)
where r > 49 and r < 101

TA貢獻1900條經驗 獲得超5個贊
SELECT *
FROM (
SELECT q.*, rownum rn
FROM (
SELECT *
FROM maps006
ORDER BY
id
) q
)
WHERE rn BETWEEN 50 AND 100
請注意雙嵌套視圖。ROWNUM在之前評估ORDER BY,因此需要正確編號。
如果省略ORDER BY子句,則不會獲得一致的順序。

TA貢獻1890條經驗 獲得超9個贊
我知道這是一個老問題,但是在最新版本中提及新功能很有用。
從Oracle 12c開始,您可以使用新的Top-n Row限制功能。無需編寫子查詢,不依賴于ROWNUM。
例如,以下查詢將按升序返回員工的最高薪水到第4高薪至第7高薪:
SQL> SELECT empno, sal
2 FROM emp
3 ORDER BY sal
4 OFFSET 4 ROWS FETCH NEXT 4 ROWS ONLY;
EMPNO SAL
---------- ----------
7654 1250
7934 1300
7844 1500
7499 1600
SQL>
- 3 回答
- 0 關注
- 1151 瀏覽
添加回答
舉報