Oracle-限制查询返回条数,MYSQL LIMIT 的实现


    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<= ?

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM