LEFT JOIN 和JOIN 多表連線

風靈使發表於2018-08-27

四張表contract 、customer、customer3、customer4
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

這是比較熟悉的3張表的連線

SELECT * 
FROM test.contract a 
JOIN test.customer b ON a.Num = b.Num2 
JOIN test.customer3 c ON a.num = c.num3; 

這裡寫圖片描述

連線不一定join後面都是和第一張表的連線。

SELECT * 
FROM test.contract a 
JOIN test.customer b ON a.Num = b.Num2 
LEFT JOIN test.customer4 d ON b.num2 = d.num4; 

這裡寫圖片描述

SELECT * 
FROM test.contract a 
JOIN test.customer b ON a.Num = b.Num2 
LEFT JOIN test.customer4 d ON a.num = d.num4; 

這句和上句的結果是一樣的
注意加粗的地方,我認為是拿abjoin 結果集 然後和dleft join ,此時 a b 還在作用域裡面。 為了避免混淆,可以將a b 的結果集起個別名 tmp

SELECT * from 
(SELECT * 
FROM test.contract a 
JOIN test.customer b ON a.Num = b.Num2) tmp 
LEFT JOIN test.customer4 d ON tmp.num = d.num4 ; 

結果同上。
PS:SQL SERVER多表連線表的連線順序從左往右

相關文章