3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
SELECT * from
(
select m.*, rownum r
from maps006 m
)
where r > 49 and r < 101

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
SELECT *
FROM (
SELECT q.*, rownum rn
FROM (
SELECT *
FROM maps006
ORDER BY
id
) q
)
WHERE rn BETWEEN 50 AND 100
請(qǐng)注意雙嵌套視圖。ROWNUM在之前評(píng)估ORDER BY,因此需要正確編號(hào)。
如果省略O(shè)RDER BY子句,則不會(huì)獲得一致的順序。

TA貢獻(xiàn)1890條經(jīng)驗(yàn) 獲得超9個(gè)贊
我知道這是一個(gè)老問題,但是在最新版本中提及新功能很有用。
從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 關(guān)注
- 1148 瀏覽
添加回答
舉報(bào)