转载自:http://nomandia.iteye.com/blog/350239
提示:
ERROR 1054 : Unknown column ... in 'on clause'
原因:
MySQL5.0 Bug, 要把联合的表用括号包含起来才行:
例:
- 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,要把联合的表用括号包含起来才行:
- 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
则会生成
- 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下就不会出错了。
解决MySQL5.0 Bug:正确使用联合表查询语句
本文介绍了MySQL5.0中关于联合表查询语句的一个bug,即在某些情况下需要将联合的表用括号包含才能避免错误。并通过示例展示了如何修改SQL语句以确保在MySQL5.0环境下正确执行。

1006

被折叠的 条评论
为什么被折叠?



