1. 程式人生 > >Oracle 分頁查詢總結 ( rownum )

Oracle 分頁查詢總結 ( rownum )

RowNum

可能都知道ROWNUM只適用於小於或小於等於,如果進行等於判斷,那麼只能等於1,不能進行大於的比較。 ROWNUM是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推。 ROWNUM總是從1開始,不管當前的記錄是否滿足查詢結果,ROWNUM返回的值都是1,如果這條記錄的值最終滿足所有的條件,那麼ROWNUM會遞加,下一條記錄的ROWNUM會返回2,否則下一條記錄的ROWNUM仍然返回1。 理解了這一點,就清楚為什麼一般的ROWNUM大於某個值或等於某個不為1的值是無法返回結果的,因此對於每條記錄的ROWNUM都是1,而ROWNUM為1不滿足查詢的結果,所以下一條記錄的ROWNUM不會遞增,仍然是1,因此所有的記錄都不滿足條件。

驗證:其實很容易理解,只能選擇 ”小於” 才能得到 rownum的次序,如果 是 “大於”,那麼 它會一直迭代的去找比它大的,然後把每一個 rownum 都設定成  “1”,因為 rownum 的每一個起點都是 “1”。而你需要的 rownum 大於 10,那麼肯定就無法得到結果了

select org_name,rownum from TB_ORGANIZATION where rownum >= 10