分頁從資料庫就做好RowNum Oracle版 | 您所在的位置:网站首页 › oracle的rownum可以做 › 分頁從資料庫就做好RowNum Oracle版 |
之前有寫過同樣類似的一篇分頁從資料庫就做好,不過那個是MS SQL2005以上的版本,而Oracle也有類似的rownum可以用,但它跟MS SQL的Row_Number有點不同,但還是可以用它來做到同樣的功能. 之前有寫過同樣類似的一篇分頁從資料庫就做好,不過那個是MS SQL2005以上的版本,而Oracle也有類似的rownum可以用,但它跟MS SQL的Row_Number有點不同,但還是可以用它來做到同樣的功能. Oracle的RowNum跟MS SQL的Row_Number最主要要注意的是它的"時機"不同,如果Oracle用了一下的語法,就會查不出資料來. select * from testTB where rownum>1 如果是以下語法就會有資料. select * from testTB where rownum>0 這個是因為rownum是從1開始編號,因為第一筆的rownum為1,不會是>1,所以永遠不會有符合的資料回傳. 再來就是它編號的時機. select *,rownum from testTB order id 直覺上,它的回傳結果會是排序好的,從第一筆的rownum會是連續的從1一直往後增加. 如果是這樣的結果,就沒什麼好提的,會這麼寫,當然就是"它"的編號是在where的條件成立後的資料就先編號,再做order by的動作,因此看到的rownum會是亂跳的情況. 因為這個原因,它拿來做資料庫分頁取回的動作就會跟MS SQL有點不同,但也還好,沒那麼的複雜. 假設我們原本要取的資料的語法如下: select UserNo,UserName from UserTable where UserQuit=0 order by UserNo 要取出指定的分頁資料只要把這段語法"包"起來就好了. select * from (select a.*,rownum as rnum from ( select UserNo,UserName from UserTable where UserQuit=0 order by UserNo ) a ) where rnum>:begin and rnum |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |