剛開始在我面試的時候經常有面試官問我這個問題,我幾乎是下意識的說出乙個是左表為主表乙個是右邊為主表,我心想這還不簡單,但是我面試面的多了以後,感覺面試官為什麼這麼想問這個問題,她到底想聽什麼?
下面我們來看一下定義:
我們結合例子來看一下:如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 ...