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

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