關於關聯查詢的幾種方式與區別

2021-10-23 19:07:19 字數 1399 閱讀 1517

表a

a_id   a_num

1     a111

2     a222

3     a333

4     a444

5     a555

表bb_id    b_num

1     b111

2     b222

3     b333

4     b444

6     b666

1.左連線 「主表 left join 關聯表 on 關聯條件」

舉例select * from a

left join b

on a.a_id= b.b_id;

結果如下:

a_id   a_num   b_id    b_num

1     a111    1     b111

2     a222    2     b222

3     a333    3     b333

4     a444    4     b444

5     a555    null   null

以保留主表優先,右邊不符合關聯條件的字段全部置為null

2.右連線 「主表 right join 關聯表 on 關聯條件」

select * from a

right join b

on a.a_id = b.b_id;

結果如下:

a_id   a_num   b_id    b_num

1     a111    1     b111

2     a222    2     b222

3     a333    3     b333

4     a444    4     b444

null   null    6    b666

同左連線相反,優先保留關聯表,主表不滿足關聯條件資料全部置為null

3.內連線 「主表 inner join 關聯表 on 關聯條件」

select * from a

inner join b

on a.a_id = b.b_id

結果如下:

a_id   a_num   b_id    b_num

1     a111    1     b111

2     a222    2     b222

3     a333    3     b333

4     a444    4     b444

精確匹配關聯條件,不符合的全部捨棄

注意:關聯查詢一般用於有關聯關係的多表查詢,因此肯定有儲存關聯關係的主外來鍵,關聯條件一般也都是主外來鍵相等

如果不對主表限制 left join 主表資訊全部保留,右表不符合條件的全部為null,

inner join是兩者同時控制

關於左關聯查詢與右關聯查詢的區別(詳解)(面試題)

剛開始在我面試的時候經常有面試官問我這個問題,我幾乎是下意識的說出乙個是左表為主表乙個是右邊為主表,我心想這還不簡單,但是我面試面的多了以後,感覺面試官為什麼這麼想問這個問題,她到底想聽什麼?下面我們來看一下定義 我們結合例子來看一下 如a表id 1,2,3 b表id 1,2,4 問ab關於id相等...

子查詢和關聯查詢的區別

子查詢就是查詢中又巢狀的查詢,表連線都可以用子查詢,但不是所有子查詢都能用表連線替換,子查詢比較靈活,方便,形式多樣,適合用於作為查詢的篩選條件,而表連線更適合與檢視多表的資料。子查詢不一定需要兩個表有關聯字段,而連線查詢必須有欄位關聯 所謂的主外來鍵關係 1,表關聯的效率要高於子查詢,因為子查詢走...

SQL關聯查詢中on與where

前段時間,做乙個查詢,打算用left join查詢存在於a表但不存在於b表記錄,但怎麼查都不對,原因是把所有filter全部放在了where語句中,因此回頭看了資料,記錄一下。on 條件是在join之前生效,因此無論後面是什麼條件都會返回左表所有記錄。where 條件是在完成join後再生效。下面進...