亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

oracle分頁查詢語句的方法 oracle分頁查詢語句第幾頁


oracle分頁查詢語句的方法 oracle分頁查詢語句第幾頁

文章插圖
對(duì)于rownum來說它是oracle系統(tǒng)順序分配為從查詢返回的行的編號(hào),返回的第一行分配的是1,第二行是2,依此類推,這個(gè)偽字段可以用于限制查詢返回的總行數(shù),且rownum不能以任何表的名稱作為前綴 。
(1) rownum 對(duì)于等于某值的查詢條件
如果希望找到學(xué)生表中第一條學(xué)生的信息,可以使用rownum=1作為條件 。但是想找到學(xué)生表中第二條學(xué)生的信息,使用rownum=2結(jié)果查不到數(shù)據(jù) 。因?yàn)閞ownum都是從1開始,但是1以上的自然數(shù)在rownum做等于判斷是時(shí)認(rèn)為都是false條件,所以無法查到rownum = n(n>1的自然數(shù)) 。
SQL> select rownum,id,name from student where rownum=1;(可以用在限制返回記錄條數(shù)的地方,保證不出錯(cuò),如:隱式游標(biāo))
SQL> select rownum,id,name from student where rownum =2;
ROWNUM ID NAME
———- —— —————————————————
(2)rownum對(duì)于大于某值的查詢條件
如果想找到從第二行記錄以后的記錄,當(dāng)使用rownum>2是查不出記錄的,原因是由于rownum是一個(gè)總是從1開始的偽列,Oracle 認(rèn)為rownum> n(n>1的自然數(shù))這種條件依舊不成立,所以查不到記錄 。
查找到第二行以后的記錄可使用以下的子查詢方法來解決 。注意子查詢中的rownum必須要有別名,否則還是不會(huì)查出記錄來,這是因?yàn)閞ownum不是某個(gè)表的列,如果不起別名的話,無法知道rownum是子查詢的列還是主查詢的列 。
SQL>select * from(select rownum no ,id,name from student) where no>2;
NO ID NAME
———- —— —————————————————
3 200003 李三
4 200004 趙四
(3)rownum對(duì)于小于某值的查詢條件
rownum對(duì)于rownum<n((n>1的自然數(shù))的條件認(rèn)為是成立的,所以可以找到記錄 。
SQL> select rownum,id,name from student where rownum <3;
ROWNUM ID NAME
———- —— —————————————————
1 200001 張一
2 200002 王二
查詢r(jià)ownum在某區(qū)間的數(shù)據(jù),必須使用子查詢 。例如要查詢r(jià)ownum在第二行到第三行之間的數(shù)據(jù),包括第二行和第三行數(shù)據(jù),那么我們只能寫以下語句,先讓它返回小于等于三的記錄行,然后在主查詢中判斷新的rownum的別名列大于等于二的記錄行 。但是這樣的操作會(huì)在大數(shù)據(jù)集中影響速度 。
SQL> select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2;
NO ID NAME
———- —— —————————————————
2 200002 王二
3 200003 李三
(4)rownum和排序
Oracle中的rownum的是在取數(shù)據(jù)的時(shí)候產(chǎn)生的序號(hào),所以想對(duì)指定排序的數(shù)據(jù)去指定的rowmun行數(shù)據(jù)就必須注意了 。
SQL> select rownum ,id,name from student order by name;
ROWNUM ID NAME
———- —— —————————————————
3 200003 李三
2 200002 王二
1 200001 張一
4 200004 趙四
可以看出,rownum并不是按照name列來生成的序號(hào) 。系統(tǒng)是按照記錄插入時(shí)的順序給記錄排的號(hào),rowid也是順序分配的 。為了解決這個(gè)問題,必須使用子查詢;
SQL> select rownum ,id,name from (select * from student order by name);
ROWNUM ID NAME
———- —— —————————————————
1 200003 李三
2 200002 王二
3 200001 張一
4 200004 趙四
這樣就成了按name排序,并且用rownum標(biāo)出正確序號(hào)(有小到大)


    以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

    「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: