oracle rownum用法關於分頁,只要看懂了原理,你就明白了,也算是自己學習過程的一個思考

來源:互聯網
上載者:User

今天閑來沒有多少事情,又想對Linux系統進行瞭解一下,當然,主要是針對工程大部分需要部署到上面,就先從資料庫著手了,當然兩者沒有多少關係,只是自己的一個順序罷了。

今天總算是對這個ROWNUM比較的瞭解。當然這個應該是早就應該瞭解了的,到現在才清楚一點的認識,也算是有點慚愧吧,

平時在寫分頁的時候,幾乎每一條都用到了ROWNUM,除非是查出資料處理的除外,但是對它都沒有一個很好的認識。

首先:ROWNUM就是一個偽列,它是要先產生,在使用,所以如果是再寫語句的時候,寫錯亂了就會出現問題。

第一:比如寫一個最簡單的,SELECT ROWNUM AS RN, TBL.* FROM TBL,看出點什嗎?就跟語句跟它加了一個編號而已,

這個編號是一偽編號,當然可能是我的理解還不夠到位,不過多寫語句之後,還是理解出了一點點。

第二:又來一條SELECT ROWNUM AS RN , TBL.* FROM TBL  WHERE RN>0 AND RN<10
和SELECT ROWNUM AS RN , TBL.* FROM TBL  WHERE ROWNUM>0 AND ROWNUM<10,顯然了吧,RN是無效的字元。

這裡就可以聲明一點就是,一切資料都是從表當中來的,如果你想憑空產生一些,你就要先聲明,插入你的結果集當中,
比如:SELECT 'CUSTOM' AS CUSTOM, TBL.* FROM TBL就會出現常量欄位,並且所有值都是CUSTOM,只不過這個ROWNUM是oracle的一個資料量給使用者使用而已,
在使用的時候,也得先得到資料,他會給你自動排文,(所以這個還是有一個很好的功能,這裡雖然說得不倫不類,只是自己的原因,
因為你在寫的時候,比如第二點的第二條語句,他就會出來資料,這是為什嗎?就是可以在後面使用)而不用你去寫什麼函數啊,
之類的來自己排列一樣。所以對於大於(>),小於(<),包括加上等於之類的
都需要注意一下原理就可以了,就跟網上說的很多一樣,為什麼會寫>1的時候,沒有資料,

在itput上看到一個很久以前的說法,覺得很好==
OWNUM是一個序列,是oracle資料庫從資料檔案或緩衝區中讀取資料的順序。它取得第一條記錄則rownum值為1,第二條為2,依次類推。如果你用>,>=,=,between...and這些條件,因為從緩衝區或資料檔案中得到的第一條記錄的rownum為1,則被刪除,接著取下條,可是它的rownum還是1,又被刪除,依次類推,便沒有了資料。
,其實在理解了它是偽列,使用的時候,先查詢,後來選擇列就沒問題了,比如:
select *
from (selet rownum as  rn,t1.* from a where ...)
where rn >10一切搞定。當然,語句寫多了,稍微思考一點點,也是可行的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.