MySQL的7種連接徹底清楚了!

不說話先看圖吧:
​​在這裏插入圖片描述

SQL的7種連接分別是:inner join、left join、right join、full outer join(2種),但MySQL的full outer join方式卻有些不一樣。

  1. 內連接(交集)

    select * from x_user a inner join x_school b on a.id=b.id;
    
  2. 左外連接

    select * from x_user a left join x_school b on a.id=b.id;
    
  3. 右外連接

    	select * from x_user a right join x_school b on a.id=b.id;
    
  4. 左差集

    select * from x_user a left join x_school b on a.id=b.id where b.id is null;
    
  5. 右差集

    select * from x_user a right join x_school b on a.id=b.id where b.id is null;
    
  6. 並集

    select * from x_user a left join x_school b on a.id=b.id union select * from x_user a right join x_school b on a.id=b.id;
    

    並集就是交叉和不交叉的都顯示出來,但需要注意的是union左右兩邊查詢的字段個數要保持一致;另外如果同一列下,union左側顯示左邊的字段,右邊顯示的寫右邊的字段,那麼需要在左右分別顯示的寫上各自的字段就好了,比如下面的1.drugstore_name, t1.organ_sign, t1.province, t1.city和 t2.drugstore_name, t2.organ_sign, t2.province, t2.city是一一對應的,那麼查詢出來的就是各自的字段,如下表格圖(紅色畫框的是表t2字段的數據)。

    SELECT
    t1.drugstore_name,
    t1.organ_sign,
    t1.province,
    t1.city,
    t1.order_id sku_10_order_id,
    t1.member_guid sku_10_member_guid,
    t1.sku_10_amount,
    t2.order_id sku_1_order_id,
    t2.member_guid sku_1_member_guid,
    t2.sku_1_amount 
    FROM	t1	LEFT JOIN t2 ON t1.organ_sign = t2.organ_sign 	AND t1.order_id = t2.order_id 
    UNION
    SELECT
    t2.drugstore_name,
    t2.organ_sign,
    t2.province,
    t2.city,
    t1.order_id,
    t1.member_guid,
    t1.sku_10_amount,
    t2.order_id sku_1_order_id,
    t2.member_guid sku_1_member_guid,
    t2.sku_1_amount 
    FROM
    t1	RIGHT JOIN t2 ON t1.organ_sign = t2.organ_sign 	AND t1.order_id = t2.order_id;
    

    在這裏插入圖片描述

  7. 差集

    select * from x_user a left join x_school b on a.id=b.id where b.id is  null union select * from x_user a right join x_school b on a.id=b.id where a.id is null;
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章