将mysql从4.1升级到5.6(没有问题)后,尝试执行查询时出现问题:
SELECT *
FROM table1, anothertable
LEFT JOIN thirdtable ON table1.id=thirdtable.id
AND thirdtable.town=anothertable.town
WHERE table1.id=8 and anothertable.id=table1.id;
以错误消息结束:
'on clause'
中的未知列'table1.id'
同样的查询在4.11上完美运行。 - 任何提示做什么,使查询再次工作? 问题是:有很多要重写的查询 - 而且它们比示例更复杂(可以解决问题)。所以找到一个mysql-server解决方案会很好。
感谢任何提示。
答案 0 :(得分:0)
您的查询中没有“自然加入”。
您在同一个查询中混合显式连接(JOIN ... ON)和隐式连接(WHERE anothertable.id = table1.id),这是一个非常糟糕的习惯。
您应该(并且显然必须)重新编写查询以仅使用显式连接。
您应该重新审视不允许您重写查询的“几个原因”。保持查询不变是一个坏主意。