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

2021-10-16 15:42:50 字數 1820 閱讀 9690

剛開始在我面試的時候經常有面試官問我這個問題,我幾乎是下意識的說出乙個是左表為主表乙個是右邊為主表,我心想這還不簡單,但是我面試面的多了以後,感覺面試官為什麼這麼想問這個問題,她到底想聽什麼?

下面我們來看一下定義:

我們結合例子來看一下:如a表id 1,2,3   b表id 1,2,4  問ab關於id相等的左右關聯能查詢出來幾條資料?

答案都是三條資料

先看左關聯的話 是 a表為主表 先把a表的123寫出來,然後在找b的關聯資料,a.id=b.id,查詢結果為 a的12與b的12,加上a的3和null,沒有的補null

然後看b為主表的右關聯查詢結果為 a的12null和b的124

那麼問題來了,如果a id為1,2,3。b的id為2,3

那麼左右關聯的結果為什麼?

表1

select *from test1;

+------+-------+-------+

| id | name | class |

+------+-------+-------+

| 1 | zhang | xx |

| 2 | xc | dd |

| 3 | dsf | ww |

+------+-------+-------+

表2

select *from test2;

+------+------+-------+

| id | name | class |

+------+------+-------+

| 2 | sd | ggg |

| 3 | 45 | fe |

+------+------+-------+

左關聯

select * from test1 left join test2 on test1.id=test2.id;

+------+-------+-------+------+------+-------+

| id | name | class | id | name | class |

+------+-------+-------+------+------+-------+

| 2 | xc | dd | 2 | sd | ggg |

| 3 | dsf | ww | 3 | 45 | fe |

| 1 | zhang | xx | null | null | null |

+------+-------+-------+------+------+-------+

右關聯

select * from test1 right join test2 on test1.id=test2.id;

+------+------+-------+------+------+-------+

| id | name | class | id | name | class |

+------+------+-------+------+------+-------+

| 2 | xc | dd | 2 | sd | ggg |

| 3 | dsf | ww | 3 | 45 | fe |

+------+------+-------+------+------+-------+

所以大家在回答這個面試題的時候除了定義可以加上這個例子 

mysql關聯查詢去重 MySQL 關聯查詢

mysql 關聯查詢 sql資料分析 1週前 mysql 關聯查詢 前面,我們介紹的都是單錶查詢 就是只從一張表中獲取資料 而實際應用的時候,我們都會同時查詢多張表,這裡,我們就介紹下,多表關聯查詢的使用。sql join 用於根據兩個或多個表中的列之間的關係,從這些表中查詢資料 前置知識 主鍵 p...

表關聯查詢

一 內連線和外連線 內連線用於返回滿足連線條件的記錄 而外連線則是內連線的擴充套件,它不僅會滿足連線條件的記錄,而且還會返回不滿足連線條件的記錄,語法如下 oracle 1.select table1.column,table2.column from table1 inner left right...

表關聯查詢

一 表關聯查詢 1.表的關聯分兩類 有關係的關聯 無關係的關聯 2.表的有關係的關聯 內關聯 where 指定關聯關係 表1.欄位 表2.欄位 and 表2.欄位 表3.欄位 有關係關聯 通過字段關係,把多張表合併在一起.select s emp.id,first name,name from s ...