select * from (select  row_.*, rownum rownum_  from (
 select userinfo.id as "id" 
 from tbl_user_teacher teacherinfo,tbl_user_info userinfo 
 where 1=1 
 and teacherinfo.id = userinfo.id 
 and userinfo.status = 1 
 and userinfo.region_id is not null   
 order by  userinfo.region_id asc )  row_
 where  rownum <= 20 ) 
 where rownum_ >=11

解决方案 »

  1.   

    目测3层SQL嵌套貌似没问题。。
      

  2.   

    region_id 有聚簇索引 会影响上面的分页??
      

  3.   

    select t2.* from (
      select t1.* , rownum rn from (
        select * from emp
      )t1 where rownum<=10 
    )t2 where rn>4;
      

  4.   

    你执行的时候报错了吗?
    我看你的意思是,取region_id的第11到20名,没有问题。
      

  5.   

    其他表都可以,只有这个表order by这个字段有这个情况.....
      

  6.   

    SELECT COUNT(*)
    FROM
      (SELECT row_.id,
        rownum rn1
      FROM
        (SELECT ui.id FROM tbl_user_info ui ORDER BY region_id
        ) row_
      WHERE rownum <= 10
      ) t1 ,
      (SELECT row_.id,
        rownum rn2
      FROM
        (SELECT ui.id FROM tbl_user_info ui ORDER BY region_id
        ) row_
      ) t2
    WHERE t1.rn1 = t2.rn2
    AND t1.id   <> t2.id;这个执行结果是 10因为region_id有重复的,如何换成id就没没有了
      

  7.   


    那你在group by region_id  去除重复数据。。