mysql 左連結 left join 條件寫在where 後面與 on後面的區別

t918412發表於2021-08-27

為進行演示先簡單的 建兩張表

1.使用者表 t_user , 使用者購買記錄表為 t_buy_log (兩者是一對多的關係)

2.填充資料查詢 t_user表

mysql 左連結 left join  條件寫在where 後面與 on後面的區別

  1. 查詢 t_bug_log表

mysql 左連結 left join  條件寫在where 後面與 on後面的區別

4.一般常用的 當進行 以t_user 表為主 進行左連結查詢時 會把 使用者所有的 資料查出來 ,右表沒有的記錄為 欄位填空 null;
SELECT t.*, b.id bid, b.product_id , b.status from t_user t LEFT JOIN t_buy_log b on t.id= b.uid;

mysql 左連結 left join  條件寫在where 後面與 on後面的區別

5.若想對上面查出後的資料 進行篩選過濾 只需在 where 後加條件便可
注意此時 使用者wanger 已被過濾掉了

mysql 左連結 left join  條件寫在where 後面與 on後面的區別

6.若想保留 所有t_user表記錄 又查詢出其是否成功(或其他條件)購買過的記錄,只需把條件 寫在on 後面 如下

mysql 左連結 left join  條件寫在where 後面與 on後面的區別(圖6)

總結 條件寫在 where 後是對連結串列查出結果之後 對資料按條件進行過濾, 加在on 後面 是先對某張表以某張表的條件(如圖6) 進行查詢過濾 再進行聯表。

(但是 若保留所有t_user表記錄 用 INNER JOIN 並不好使)

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章