1. 程式人生 > >MySQL 1054錯誤 Unknown column .... in 'on clause'

MySQL 1054錯誤 Unknown column .... in 'on clause'

提示:

ERROR 1054 (42S22): Unknown column ... in 'on clause'

原因:

MySQL5.0 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
這句話執行應該是沒有錯誤的,但是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
但是HQL生成就是這樣的語句,怎麼辦呢?我們可以改變HQL的寫法來達成生成另一種SQL語句,以避免這種BUG的出錯
把select (c.id, a.id, b.id) from C c Left join c.a a Left join c.b b
則會生成

Sql程式碼
SELECT (c.id, a.id, b.id) FROM A a LEFT JOIN B b LEFT JOIN C c ON c.a_id = a.a_id AND c.b_id = b.b_id

這樣的話mysql下就不會出錯了。

以上文章了來自網路。