国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Oracle/PL/SQL奇技淫巧之ROWNUM偽列

這篇具有很好參考價(jià)值的文章主要介紹了Oracle/PL/SQL奇技淫巧之ROWNUM偽列。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

ROWNUM偽列

ROWNUM是一個(gè)偽列,它是根據(jù)每次查詢的結(jié)果動(dòng)態(tài)生成的一列遞增編號(hào),表示 Oracle 從表中選擇該行的順序,選擇的第一行ROWNUM為1,第二行ROWNUM為2,以此類推。

注意1:

ROWNUM偽列是在WHERE子句之前生成的,就是說(shuō)它并不是在執(zhí)行了WHERE子句過(guò)濾之后再對(duì)數(shù)據(jù)編號(hào)
比如在執(zhí)行WHERE子句,結(jié)果數(shù)據(jù)是這樣的:

id name age ROWNUM
0001 mary 18 1
0002 mike 20 2
0003 john 19 3
0004 echoo 16 4
0005 susy 18 5
0006 kitty 21 6

這時(shí)候的ROWNUM是一列遞增排列的、完整的編號(hào)
然后如果執(zhí)行一個(gè)WHERE子句:WHERE age >18
那數(shù)據(jù)就變成了:

id name age ROWNUM
0002 mike 20 2
0003 john 19 3
0006 kitty 21 6

ROWNUM出現(xiàn)了斷層,不連續(xù)了
如果后面再執(zhí)行一個(gè)ORDER BY age DESC
就變成這樣了:

id name age ROWNUM
0006 kitty 21 6
0002 mike 20 2
0003 john 19 3

ROWNUM不按順序排了
所以在利用ROWNUM偽列來(lái)對(duì)結(jié)果集做限制、過(guò)濾、排序、分頁(yè)等操作的時(shí)候一定要注意這個(gè)點(diǎn),不然很容易錯(cuò)亂;

注意2:

ROWNUM是一行一行賦值的,只有上一行數(shù)據(jù)被選擇成功,下一行才會(huì)遞增!而且 select 語(yǔ)句也是一行一行選擇的,每 select 一行數(shù)據(jù)就要進(jìn)行 where 條件判斷。
比如有這樣一個(gè)employees表:

id name age
0001 mary 18
0002 mike 20
0003 john 19
0004 kitty 16
0005 susy 18
0006 echoo 21

對(duì)這個(gè)表執(zhí)行這樣一個(gè)SQL:

SELECT * FROM employees WHERE ROWNUM > 1;

這句SQL的預(yù)期為取出除第一條數(shù)據(jù)外的所有數(shù)據(jù),但是執(zhí)行的結(jié)果是一條都選不出來(lái),來(lái)看執(zhí)行過(guò)程:

① select 出的第一條數(shù)據(jù)為

id name age
0001 mary 18

ROWNUM 給這條數(shù)據(jù)賦值,因?yàn)槭堑谝粭l數(shù)據(jù),所以從 1 開始,賦值完是這樣的:

id name age ROWNUM
0001 mary 18 1

③ 進(jìn)行 WHERE ROWNUM > 1 條件判斷,1>1不滿足條件,所以第一條數(shù)據(jù)被過(guò)濾掉
④ select 第二條數(shù)據(jù)

id name age
0002 mike 20

ROWNUM 給這條數(shù)據(jù)賦值,因?yàn)樯弦粭l數(shù)據(jù)被過(guò)濾掉了,所以還是從 1 開始,賦值完是這樣的:

id name age ROWNUM
0002 mike 20 1

⑥ 進(jìn)行 WHERE ROWNUM > 1 條件判斷,1>1不滿足條件,所以這數(shù)據(jù)也被過(guò)濾掉
⑦ ·············
一直如此循環(huán)直到結(jié)束,都沒(méi)有符合條件的數(shù)據(jù),所以一條數(shù)據(jù)都選不出來(lái)!

例1:取前10條數(shù)據(jù)

ROWNUM來(lái)限制查詢返回的行數(shù),如下例所示:

SELECT * FROM employees WHERE ROWNUM < 11;

WHERE ROWNUM < 11表示返回查詢數(shù)據(jù)的前10條;

例2:取排序后的前10條數(shù)據(jù)

不能夠像下面這樣直接在WHERE子句后簡(jiǎn)單的加上ORDER BY子句了

SELECT * FROM employees WHERE ROWNUM < 11 ORDER BY age;

因?yàn)檫@里的意思是先執(zhí)行WHERE子句選出ROWNUM1~10的數(shù)據(jù),然后再進(jìn)行排列,和我們預(yù)想不符。我們要的是按年齡排序后的前10條數(shù)據(jù)。
所以應(yīng)該這樣寫:

SELECT *
  FROM (SELECT * FROM employees ORDER BY employee_id)
  WHERE ROWNUM < 11;

這里的意思就是先執(zhí)行排序,然后對(duì)排完序的結(jié)果集用ROWNUM偽列按順序編號(hào),然后取其中ROWNUM為1~10的那10條數(shù)據(jù);

例3:分頁(yè)

SELECT * 
FROM( SELECT temp_table.*,ROWNUM AS rn
  	  FROM (SELECT * FROM employees ORDER BY employee_id) temp_table
  	 ) result_table
WHERE result_table.rn BETWEEN 起始行數(shù) AND 結(jié)尾行數(shù)

通過(guò)嵌套查詢的方式,把動(dòng)態(tài)的ROWNUM偽列變成固定的列rn,然后再用rn列進(jìn)行分頁(yè);文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-653850.html

到了這里,關(guān)于Oracle/PL/SQL奇技淫巧之ROWNUM偽列的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 位運(yùn)算的奇技淫巧

    位運(yùn)算的奇技淫巧

    左移運(yùn)算 將二進(jìn)制數(shù)向左移位操作,高位溢出則丟棄,低位補(bǔ)0。 右移運(yùn)算 右移位運(yùn)算中,無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的運(yùn)算并不相同。對(duì)于無(wú)符號(hào)數(shù),右移之后高位補(bǔ)0;對(duì)于有符號(hào)數(shù),符號(hào)位一起移動(dòng),正數(shù)高位補(bǔ)0,負(fù)數(shù)高位補(bǔ)1 按位與運(yùn)算 有0就是0,巧計(jì):這個(gè)符號(hào)像是有兩

    2024年01月21日
    瀏覽(22)
  • matlab奇技淫巧——繪制三維地圖

    matlab奇技淫巧——繪制三維地圖

    ??在數(shù)據(jù)處理工作中,常常會(huì)用到地圖的繪制,最常用的自然是繪制平面的區(qū)域/全球地圖,通過(guò) 即可繪制,效果如下,其中經(jīng)度為 ? 180 ~ 180 -180sim180 ? 180 ~ 180 ,負(fù)為西經(jīng),正為東經(jīng),緯度為 ? 90 ~ 90 -90sim90 ? 90 ~ 90 ,北緯為正,南緯為負(fù)。 ??不過(guò)本博文題目

    2024年02月07日
    瀏覽(32)
  • 奇技淫巧:Lambda表達(dá)式

    奇技淫巧:Lambda表達(dá)式

    最近學(xué)習(xí)到的奇技淫巧: Lambda表達(dá)式 ,將函數(shù)包括遞歸函數(shù)改為L(zhǎng)ambda表達(dá)式寫法,可節(jié)省大量時(shí)間,在大量調(diào)用下可能節(jié)省近一半時(shí)間。 該語(yǔ)法過(guò)于復(fù)雜,見https://en.cppreference.com/w/cpp/language/lambda,本文僅寫在算法競(jìng)賽下的應(yīng)用。 該語(yǔ)法在OIWiki中有所提及,但是十分抽象,

    2024年02月12日
    瀏覽(25)
  • 記錄--`ElementUI` 中的奇技淫巧

    記錄--`ElementUI` 中的奇技淫巧

    在 ElementUI 的世界中,不僅有基礎(chǔ)的組件和功能,還有一些讓你眼前一亮、 * 得不能再 * 的高級(jí)技巧和竅門。本文將揭示這些技巧,讓你在前端開發(fā)的舞臺(tái)上獨(dú)領(lǐng)風(fēng)騷。無(wú)論你是一個(gè)勇敢的創(chuàng)新者還是一個(gè)喜歡調(diào)皮搗蛋的開發(fā)者,這些技巧都將讓你的 ElementUI 應(yīng)用更加酷炫和有

    2024年02月08日
    瀏覽(21)
  • Intellij IDEA有什么奇技淫巧?

    Intellij IDEA有什么奇技淫巧?

    IDEA全稱 IntelliJIDEA,是java語(yǔ)言開發(fā)的集成環(huán)境,IntelliJ在業(yè)界被公認(rèn)為最好的java開發(fā)工具之一,尤其在 智能代碼助手、代碼自動(dòng)提示、重構(gòu)、J2EE支持、Ant、JUnit、CVS整合、代碼審查、創(chuàng)新的GUI設(shè)計(jì) 等方面的功能可以說(shuō)是超常的。 idea下載地址:jetbrains.com/idea 下面來(lái)說(shuō)幾個(gè)I

    2024年02月15日
    瀏覽(19)
  • 一看就懂的OpenGL ES教程——仿抖音濾鏡的各種奇技淫巧(一)_opengl es添加視頻

    一看就懂的OpenGL ES教程——仿抖音濾鏡的各種奇技淫巧(一)_opengl es添加視頻

    上一篇文章一看就懂的OpenGL ES教程——渲染宮崎駿動(dòng)漫重拾童年 已經(jīng)詳細(xì)闡述了如何用OpenGL es將原始的YUV數(shù)據(jù)組成的視頻渲染到屏幕上,想必有很多童鞋在閱讀了它之后依然覺(jué)得回味無(wú)窮,學(xué)習(xí)的胃口也越來(lái)越大了,因?yàn)槟銈冎纼H僅渲染視頻是不夠的,我們要的是,能夠在

    2024年04月25日
    瀏覽(25)
  • 一看就懂的OpenGL ES教程——仿抖音濾鏡的各種奇技淫巧(一)_opengl es添加視頻(1)

    一看就懂的OpenGL ES教程——仿抖音濾鏡的各種奇技淫巧(一)_opengl es添加視頻(1)

    自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。 深知大多數(shù)HarmonyOS鴻蒙開發(fā)工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)

    2024年04月16日
    瀏覽(24)
  • Oracle/PL/SQL數(shù)據(jù)庫(kù)基礎(chǔ)操作(持續(xù)更新)

    Oracle/PL/SQL數(shù)據(jù)庫(kù)基礎(chǔ)操作(持續(xù)更新)

    ????????PL/SQL不是一個(gè)獨(dú)立的編程語(yǔ)言;它是Oracle編程環(huán)境中的工具。 SQL* Plus是一個(gè)互動(dòng)的工具,它可以在命令提示符下鍵入SQL和PL/SQL語(yǔ)句。這些命令發(fā)送到數(shù)據(jù)庫(kù)進(jìn)行處理。語(yǔ)句處理之后將結(jié)果發(fā)回,并在屏幕上顯示出來(lái)。 分類 命令 DDL create:創(chuàng)建;drop:刪除;alter:

    2024年02月09日
    瀏覽(20)
  • ORACLE數(shù)據(jù)庫(kù) —— PL/SQL知識(shí)點(diǎn)2

    ORACLE數(shù)據(jù)庫(kù) ?PL/SQL語(yǔ)句基礎(chǔ)知識(shí)點(diǎn)??適合有SQL基礎(chǔ)的人群。? 禁止轉(zhuǎn)載! 內(nèi)置函數(shù) 字符串函數(shù) ?? ?lower(列名|字符串)函數(shù)用于返回字符串的小寫形式。 ?? ??? ?eg.SELECT ename,sal FROM emp WHERE ename=lower(\\\'ename\\\'); ?? ?upper(列名|字符串)函數(shù)用于返回字符串的大寫形式。 ?? ???

    2024年02月08日
    瀏覽(24)
  • 用PL/SQL Developer連接遠(yuǎn)程Oracle數(shù)據(jù)庫(kù)

    用PL/SQL Developer連接遠(yuǎn)程Oracle數(shù)據(jù)庫(kù)

    oracle數(shù)據(jù)庫(kù)安裝教程參考 注意: 第六步中的Oracle基目錄中的用戶名為中文的話,需要去掉中文部分。然后管理口令一定保存好。 2.打開oracle安裝目錄(默認(rèn)在C盤,我的在D盤),找到tnsnames.ora文件 這是oracle客戶端所需要的一個(gè)文件,通過(guò)該文件可以配置數(shù)據(jù)庫(kù)的連接地址,

    2024年02月13日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包