bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

深入Oracle的leftjoin中on和where的區別-創新互聯

今天遇到一個求某月所有天數的統計結果,如果某日的結果是0也需要顯示出來,即:

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:申請域名雅安服務器托管、營銷軟件、網站建設、西崗網站維護、網站推廣。

日期          交易次數  交易金額

2009-4-01      1        10

2009-4-02      2        20

2009-4-03      0        0

2009-4-04      5         50

一開始我用的左連接,用on做為兩表關聯條件,用where作為過濾條件,但是發現0的數據根本不顯示,后來把where關鍵字去掉,把過濾條件都放到on里,問題解決,網上一搜,找到了答案:

數據庫在通過連接兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然后再將這張臨時表返回給用戶。

在使用left jion時,on和where條件的區別如下:

1、on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。

2、where條件是在臨時表生成好后,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。

假設有兩張表:

表1 tab1:

id size

1 10

2 20

3 30

表2 tab2:

size name

10 AAA

20 BBB

20 CCC

兩條SQL:

1、select * form tab1 left join tab2 on (tab1.size = tab2.size) where tab2.name='AAA'

2、select * form tab1 left join tab2 on (tab1.size = tab2.size and tab2.name='AAA')

第一條SQL的過程:

1、中間表

on條件:

tab1.size = tab2.size

tab1.id   tab1.size   tab2.size   tab2.name

1        10          10        AAA

2        20           20       BBB

2       20            20        CCC

3       30           (null)        (null)

2、再對中間表過濾

where 條件:

tab2.name='AAA'

tab1.id    tab1.size     tab2.size   tab2.name

1          10          10        AAA

第二條SQL的過程:

1、中間表

on條件:

tab1.size = tab2.size and tab2.name='AAA'

(條件不為真也會返回左表中的記錄)

tab1.id    tab1.size     tab2.size    tab2.name

1        10           10          AAA

2        20          (null)        (null)

3        30           (null)         (null)

其實以上結果的關鍵原因就是left join,right join,full join的特殊性,不管on上的條件是否為真都會返回left或right表中的記錄,full則具有left和right的特性的并集。 而inner jion沒這個特殊性,則條件放在on中和where中,返回的結果集是相

另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章名稱:深入Oracle的leftjoin中on和where的區別-創新互聯
文章起源:http://vcdvsql.cn/article30/csippo.html

成都網站建設公司_創新互聯,為您提供響應式網站網站維護域名注冊外貿網站建設云服務器靜態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發