以前分頁習慣用這樣的SQL語句:
select * from
(select t.*,rownum row_num from mytable t order by t.id) b
where b.row_num between 1 and 10
結果發現由于該語句會先生成rownum 后執行order by 子句,因而排序結果根本不對,后來在GOOGLE上搜到一篇文章,原來多套一層select 就能很好的解決該問題,特此記錄,語句如下:
select * from
(select a.*,rownum row_num from
(select * from mytable t order by t.id desc) a
) b where b.row_num between 1 and 10
(select a.*,rownum row_num from
(select * from mytable t order by t.id desc) a
where rownum<=10
) b where b.row_num >= 1
很對
呵呵
select * from
(
select t.*,rownum row_num from mytable t order by t.id desc)
) where row_num between 1 and 10
我怎么可以呢?剛剛測試了下
你的不可以的。你可以多做些數據,然后你會發現第一頁和第二的數據有什么區別
這個其實是可以的 現在oracle10g已經可以了 并且無需在外面套那么多 一層也可以搞定