1. 程式人生 > 資料庫 >Mysql JOIN多表巢狀查詢

Mysql JOIN多表巢狀查詢

網上找的大多數有關巢狀查詢的都是關於 IN 的使用,比如
SELECT * FROM tab1 WHERE key IN (SELECT key2 FROM tab2)
通常來說這樣的巢狀只能處理比較簡單的情況,在相對複雜的情況下可能要對多個鍵進行配對,在這裡我記錄一下,可能比較亂

SELECT  表1.Shop AS 門店,表1.Code AS 號碼,表1.Stock AS 股票,表2.Name AS 名稱
        IFNULL(臨時表.Num,0) AS 銷量
FROM 表1
LEFT JOIN 表2 on 表1.Code=表2.Code
LEFT JOIN (select Code,SUM(Num) as Num from 表3
        where Code='111'
        group by Code ORDER BY Num DESC) as 臨時表 on 臨時表.Code=表1.Code
where 表1.Date='2020-02-02'
  • SUM(Num) 使用函式後不能再直接 .Num 進行使用了,會找不到,可以加一個as使用別名
  • LEFT JOIN 後面別忘了跟上表名,我在這裡使用了巢狀的查詢,並賦予別名,可以直接在select後面使用SELECT IFNULL(臨時表.Num,0) AS 銷量
  • IFNULL(expr,val) 表示判斷表示式是否為空,若為空用val替代,用以解決left join 產生的空值