mysql下出現Unknown column 'xx' in 'on clause'的解決方法

版本: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 )

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章