溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle里面的外連中where和on之后and有啥區(qū)別

發(fā)布時間:2020-08-09 17:03:37 來源:ITPUB博客 閱讀:385 作者:修辭立其誠 欄目:關系型數(shù)據(jù)庫

1、表做關聯(lián)的時候有些條件寫在where中,有些寫在on之后關聯(lián)條件的and中。那么有什么區(qū)別呢。

2、我們指導,表關聯(lián)一般分為兩種:內(nèi)聯(lián)和外聯(lián)。

3、我們先來看內(nèi)聯(lián)。

4、準備兩個表做連接。表A:test_tb_stid;表B:test_tb_stscore;

5、表A數(shù)據(jù)如下圖:

Oracle里面的外連中where和on之后and有啥區(qū)別

6、表B數(shù)據(jù)如下圖:

Oracle里面的外連中where和on之后and有啥區(qū)別

7、用紅色字段stid作為關聯(lián)條件

8、內(nèi)聯(lián),先把過濾條件放在and后:

select a.*,b.*
from test_tb_stid a
inner join test_tb_stscore b
on a.stid = b.stid
and a.stid = 2

9、結果,發(fā)現(xiàn)只出現(xiàn)一條:

Oracle里面的外連中where和on之后and有啥區(qū)別

10、把過濾條件放到where

Oracle里面的外連中where和on之后and有啥區(qū)別

11、發(fā)現(xiàn)內(nèi)聯(lián)的時候,這個過濾條件放on之后的and和where沒有區(qū)別。

12、我們再看一下外聯(lián)。

Oracle里面的外連中where和on之后and有啥區(qū)別

發(fā)現(xiàn)雖然加了過濾條件,但是a表還是全量的。如果不加這個a.stid=1,應該會匹配出兩條出來,如下圖:

Oracle里面的外連中where和on之后and有啥區(qū)別

說明外聯(lián)的話:1、主表總是全量的。2、on之后的and條件只對結果內(nèi)容產(chǎn)生影響,不對結果量產(chǎn)生影響。

13、過濾條件加到where上

Oracle里面的外連中where和on之后and有啥區(qū)別

直接就是對結果集產(chǎn)生影響了。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI