JOIN 中 WHERE 用法

原文分享 解說更詳細


以下就是將 三個Table A、B、C JOIN 查詢的語法

SELECT * FROM A
INNER JOIN B ON A.K1=B.K2
LEFT JOIN C ON A.K1=C.K3

再來要討論 WHERE 放置的位置

  • 方法一 : 通通合併起來一起查

    無腦簡單好用,可是很操機器。

SELECT * FROM A
INNER JOIN B ON A.K1=B.K2
LEFT JOIN C ON A.K1=C.K3
WHERE 所有條件
  • 方法二 :

    不一定有用(看資料庫是否有支援),比較適合一對一的合併對應資料。

SELECT * FROM A
INNER JOIN B ON (A.K1=B.K2 AND A及B條件)
LEFT JOIN C ON (A.K1=C.K3 AND A及C條件)
  • 方法三 : 用仔查詢的方式,先將各表的資料查詢成 VIEW 再做合併

    較適合一對多,大量紀錄的查詢。

SELECT * FROM (SELECT * FROM A WHERE A條件) AS A
INNER JOIN (SELECT * FROM B WHERE B條件) AS B ON A.K1=B.K2
LEFT JOIN (SELECT * FROM C WHERE C條件) AS C ON A.K1=C.K3

想知道哪個快實際跑一次最實在。

同場加映

刪除資料時使用 INNER JOIN 時,請將需要刪除的 TABLE 寫在 DELETE 後面 ( 用代號也行 )

DELETE A  
FROM `inventory` AS B INNER JOIN `inventory_list` AS A 
ON A.`id`=B.`ids`
WHERE A.`value` > 10 AND B.`level` < 5

results matching ""

    No results matching ""