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

 

posted @ 2019-12-04 11:32  勤练带来力量  阅读(11345)  评论(0)    收藏  举报