MYSQL學習二 關於左連接
阿新 • • 發佈:2018-05-04
信息 可能 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學習二 關於左連接