MySQL LIMIT 如何改写成Oracle limit

mysql代码

SELECT * FROM tablename LIMIT 100,15

如何改写成Oracle的语句。

阅读 24.1k
4 个回答

首先,Oracle是不支持limit的。个人感觉分页方面mysql比Oracle要好些。
关于楼组这个问题,恰好公司全短时遇到(数据库变更mysql->Oracle)。分页是是利用rownum实现的。
我简单描述一下思路,采用mysql limit 20,30 查询第20至30条数据。用Oracle实现:
第一步,根据过滤条件先查询出前30条数据,这里用rownum记录一下顺序,注意起别名,后面用好。
第二步,在刚刚建立的结果集中查询第20条以后的数据,通过咱们起别名的那个字段。
这样,实现了查询第20至30条数据。
处理代码如下:

 select * from 
     (select A.*,rownum rn from
            (   
                   原mysql的语句,注意去掉limit
             )A 
            where rownum > 30
      )
      where rn < 20
新手上路,请多包涵

MySQL:

select * 
from sometable
order by name
limit 20,10

在Oracle中,可以使用ROWNUM来代替:

select * 
from sometable
where rownum <= 10
order by name

如果帮助到您了,麻烦给个赞,谢谢!

33333333333333333333333