版本:5.7
異常
錯誤代碼: 1054
Unknown column 'ar.tid' in 'on clause'
第一種情況
Sql代碼
SELECT (c.id, a.id, b.id) FROM A a, B b LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id
這句話執行應該是沒有錯誤的,但是Mysql 5 下執行則會出錯。
解決
因爲mysql下有這樣一個BUG,要把聯合的表用括號包含起來纔行:
Sql代碼
SELECT (c.id, a.id, b.id) FROM (A a, B b) LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id
第二種情況
Sql代碼
SELECT (c.id, a.id) FROM A a LEFT JOIN C c ON c.a_id = a.a_id when c.a_id=(select B.id from b as B join JOIN C c ON c.a_id = a.a_id )
在子查詢的聯表中使用父級中的值會異常
解決
把條件放到where 中
Sql代碼
SELECT (c.id, a.id) FROM A a LEFT JOIN C c ON c.a_id = a.a_id when c.a_id=(select B.id from b as B join JOIN C c where c.a_id = a.a_id )