Mysql JOIN多表巢狀查詢
阿新 • • 發佈:2020-02-03
網上找的大多數有關巢狀查詢的都是關於 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 產生的空值