以前分頁(yè)習(xí)慣用這樣的SQL語句:
select * from
(select t.*,rownum row_num from mytable t order by t.id) b
where b.row_num between 1 and 10
結(jié)果發(fā)現(xiàn)由于該語句會(huì)先生成rownum 后執(zhí)行order by 子句,因而排序結(jié)果根本不對(duì),后來在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
很對(duì)
呵呵
select * from
(
select t.*,rownum row_num from mytable t order by t.id desc)
) where row_num between 1 and 10
我怎么可以呢?剛剛測(cè)試了下
你的不可以的。你可以多做些數(shù)據(jù),然后你會(huì)發(fā)現(xiàn)第一頁(yè)和第二的數(shù)據(jù)有什么區(qū)別
這個(gè)其實(shí)是可以的 現(xiàn)在oracle10g已經(jīng)可以了 并且無需在外面套那么多 一層也可以搞定