看下面這個sql語句
select t2.
*
from (
select t. *, rownum as row_num from t where rownum<=20 order by ID asc
select t. *, rownum as row_num from t where rownum<=20 order by ID asc
) t2 where t2.row_num>10
order by ID asc
因為在查詢的時候,order by 的執行是在 select 之后的,所以在第一層查詢中,得到的結果可能是如下
這樣的子結果集,在經過第二層過濾的時候,是得不到我們想要的結果的
所以需要用如下的sql語句實現分頁排序
select t3.
*
from (
select t2. *, rownum as row_num from (
select * from t order by t.id asc
) t2 where rownum <= 20
) t3
where t2.row_num > 11
select t2. *, rownum as row_num from (
select * from t order by t.id asc
) t2 where rownum <= 20
) t3
where t2.row_num > 11
order by t3.id asc