Oracle沒有MYSQL LIMIT子句,但是從12c版本開始,我們可以使用FETCH子句限制返回行數。
SELECT * FROM DUAL OFFSET ROW | ROWS FETCH FIRST | NEXT rowcount | percent PERCENT ROW | ROWS ONLY | WITH TIES ;
關鍵字說明:
- OFFSET ROW | ROWS 查詢時限定要跳過的行數
- FETCH 關鍵字記住就行
- FIRST | NEXT rowcount | percent PERCENT ROW | ROWS 限定行數或者百分比
- ONLY | WITH TIES 完全按照行數限制還是返回最后一行相同的值,使用WITH TIES必須有ORDER子句
限制條件:
- 不能使用FOR UPDATE
- 不能使用序列
- 查詢包含FRTCH則物化試圖刷新會失敗
- ORA-00918錯誤時,需調整重復的字段名
例子:
SELECT employee_id, last_name FROM employees ORDER BY employee_id
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY;
12c之前怎么辦?
SELECT * FROM (SELECT * FROM DUAL ORDER BY COLUMN_NAME) WHERE ROWNUM>= ? AND ROWNUM<= ?