SELECT ROWNUM AS rnum,c.* FROM s_city c;SELECT ROWNUM AS rnum,c.* FROM (SELECT * FROM s_city) c;这两种oracle分页有什么区别,结果集都一样,上网查了,都是使用第二种,求解oracle

解决方案 »

  1.   

    SELECT * FROM (
    SELECT ROWNUM AS rnum,c.* FROM s_city c
    ) WHERE rnum BETWEEN 6 AND 10;SELECT * FROM (
    SELECT ROWNUM AS rnum,c.* FROM (SELECT * FROM s_city) c
    ) WHERE rnum BETWEEN 6 AND 10;这两句的区别
      

  2.   

    其实我觉得都是一样的 我在我的数据库上测试也是一样的 把2个结果集 进行join 然后 rnum相等,主键不相等的是不存在的!
    因为没有order by所以2种都是使用系统默认的顺序 所以 先 select *  from s_city 还是直接 取rownum其实数据的顺序都是一样的 !一般选择先查询是 因为正常情况下都会先对数据进行某种排序 然后再取某一段数据!
      

  3.   

    你写得不对 , 如果用rownum分页的话是三层sql,必须先order by
    还有一种是用rownumber() over()分页,不需要order by
      

  4.   

    你理解的不全吧,括号里加条件和rownum,不然rownum>1是查不出数据的