1. 程式人生 > >MYSQL學習二 關於左連接

MYSQL學習二 關於左連接

信息 可能 null xid 浪費 學習 就會 兩個 如果

工作中有如下的SQL, 針對A.ID =‘abcdefg‘, left join B和C兩個表,來查找其他信息。就算是B和C中沒有任何滿足條件的記錄,最後結果也肯定不是空。因為A.ID =‘abcdefg‘是存在的。

SELECT ******
FROM tableA    A
LEFT JOIN tableB  B  on b.DELETED = 0
AND A.DELETED = 0
AND B.fid=A.ID
LEFT JOIN tableC  C ON B.XXXid=C.id AND c.DELETED = 0
WHERE A.ID =abcdefg

一開始我的寫法是這樣的: 把 b.DELETED = ‘0‘放在後面,這樣導致結果為null, 這是因為: 如果把and b.DELETED = ‘0‘ 放在最後,是對left join後的結果做過濾,

這個時候就有可能導致結果為null。(考慮這種情況: B和C表沒有能和A連接成功的記錄,如果用上面的SQL,會出結果,用這個SQL,就會null)

SELECT ******
FROM tableA    A
LEFT JOIN tableB  B  on
AND A.DELETED = 0
AND B.fid=A.ID
LEFT JOIN tableC  C ON B.XXXid=C.id AND c.DELETED = 0
WHERE A.ID =abcdefg 

and  b.DELETED = 0

上面這個問題是工作中遇到的,一不小心浪費了好多時間來fix, SQL掌握的不好!

MYSQL學習二 關於左連接