Oracle 的 rownum 相關

最近沒繼續寫的緣由是忙成狗html

是真的忙成狗不是修辭的sql

這是我最近的狀態spa

近期高清無碼大圖設計


前面在寫sql排序取值的時候被rownum卡了一下code

心思鬱結htm

在心裏百萬草泥馬踏平Oracle大樓後決定好好看一下rownumblog

研習良久,心有所得排序

如今放出來讓你們感覺一下Oracle在這個字段上究竟是多麼反人類。
get


首先咱們假設這樣一張表:
table

t_orcl

id type
11 a
3 b
2 c
6 d
5 e
8 f


(1)我要取表的第二條記錄

select rownum, id, type from t_orcl where rownum = 2;  (誤)

無論從哪一個角度來看的話這句話貌似都是沒錯的吧

等於2嘛

不可能有哪一種語言腦殘到連等於2都不明白吧

吶,圖樣

在Oracle看來,1是true

其餘全部東西都是false

全部你你你懂吧?全部都是false

丟雷樓謀

因此說1以上的天然數在作等於判斷時被認爲是false條件,查不出結果的


(2)我要取第三四五六條記錄

select rownum, id, type from t_orcl where rownum > 2;  (誤)

如今我已經不敢保證這句話的正確性了

大於false嘛

之因此還要寫出來純粹是抱着一種「呵呵有種你來砍死我」的僥倖心理

而後丫痛痛快快的砍死了我

嗯嗯

大於false嘛

有心理準備的


那正確の姿式是什麼樣子的呢?

這樣

select * from (select rownum no, id, type from t_orcl) where no > 2;

要注意的是rownum必需要有別名

由於主查詢和子查詢都有一個rownum它不知道你指的是哪一個

你這麼傻*還尼瑪裝高端!

你不是什麼都知道嗎?

你不是什麼都當false嗎?

你不是視一切如過眼雲煙嗎?


(3)我要取第一二條記錄

select rownum, id, type from t_orcl where rownum < 3;

其實我已經不想試了

小於false嘛怎麼可能會有結果

再寫一遍的意思就像是「我有盾你TM有種殺我兩遍」

而後這句話竟!然!有!結!果!


(4)我要取第二三條記錄

select * from (select rownum no, id, type from t_orcl where rownum <= 3) where no >= 2;

這句話是對的

真的,是對的

咱們是先讓它返回小於等於3的記錄行

而後再在主查詢中判斷新的rownum的別名列大於等於2的行

我知道這樣會影響效率

反正也就這麼着吧

心好累


(5)排序

select rownum, id, type from t_orcl order by id;

結果什麼的不重要

如今我來憑藉我紮實的語言功底描述一下

因爲rownum取值是在排序以前因此數據依據id排序後rownum也依據其所服♂侍的那一列的id進行了排序因此顯示出來的結果就是rownum並非按順序排列的而是排序以前的rownum在排序以後的順序。

顯示的是排序以前的rownum在排序以後的順序。

我真是折服於本身的語言表達能力

就是這樣


(6)正しい分類方法

select rownum, id, type from (select * from t_orcl order by id);

我高考語文一百二十七分

因此我須要再一次描述一下結果

結果就是大家心中想的那種排序


好了至此我想說的都說完了

還有一點是對Oracle的設計師說的:

這種人好惡心的!

臭不要臉還在笑!

我搶劫你什麼

我是搶劫的人嗎

把我騙來這麼遠

打我還要叫人來

我這麼遠趕過來

一百塊都不給我

還在還在還在笑

好壞好壞好壞的

我打了你哪裏

你打我差很少

我搶劫你什麼

一百塊都不給我


Done.


PS.這篇文章是轉載的

原帖網址是這個

http://v.ifeng.com/vblog/fun/201411/044bd588-725c-472e-a295-b2977f07e53f.shtml

我是從第1分10秒開始轉的。


PS2.我說不放圖就不放圖了麼說什麼你都信這孩子真可愛呵呵呵

相關文章
相關標籤/搜索