對于 rownum 來說它是 oracle 系統順序分配為從查詢返回的行的編號,返回的第一行分配的是 1 ,第二行是 2 ,依此類推,這個偽字段可以用于限制查詢返回的總行數,而且 rownum 不能以任何表的名稱作為前綴。
(1)?rownum
對于等于某值的查詢條件
如果希望找到學生表中第一條學生的信息,可以使用
rownum=1
作為條件。但是想找到學生表中第二條學生的信息,使用
rownum=2
結果查不到數據。因為
rownum
都是從
1
開始,但是
1
以上的自然數在
rownum
做等于判斷是時認為都是
false
條件,所以無法查到
rownum = n
(
n>1
的自然數)。
(
2
)
rownum
對于大于某值的查詢條件
??
?
如果想找到從第二行記錄以后的記錄,當使用
rownum>2
是查不出記錄的,原因是由于
rownum
是一個總是從
1
開始的偽列,
Oracle
認為
rownum> n(n>0
的自然數,n=0則查詢全部
)
這種條件依舊不成立,所以查不到記錄。
(
3
)
rownum
對于小于某值的查詢條件
如果想找到第三條記錄以前的記錄,當使用
rownum<3
是能得到兩條記錄的。顯然
rownum
對于
rownum<n
(
(n>1
的自然數)的條件認為是成立的,所以可以找到記錄。
綜上幾種情況,可能有時候需要查詢
rownum
在某區間的數據,那怎么辦呀從上可以看出
rownum
對小于某值的查詢條件是人為
true
的,
rownum
對于大于某值的查詢條件直接認為是
false
的,但是可以間接的讓它轉為認為是
true
的。那就必須使用子查詢。例如要查詢
rownum
在第二行到第三行之間的數據,包括第二行和第三行數據,那么我們只能寫以下語句,先讓它返回小于等于三的記錄行,然后在主查詢中判斷新的
rownum
的別名列大于等于二的記錄行。但是這樣的操作會在大數據集中影響速度。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
