mysql4 - > mysql5:LEFT JOIN和一个Query中的隐式连接不再起作用

时间:2011-12-23 17:25:27

标签: mysql

将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解决方案会很好。

感谢任何提示。

1 个答案:

答案 0 :(得分:0)

您的查询中没有“自然加入”。

您在同一个查询中混合显式连接(JOIN ... ON)和隐式连接(WHERE anothertable.id = table1.id),这是一个非常糟糕的习惯。

您应该(并且显然必须)重新编写查询以仅使用显式连接。

您应该重新审视不允许您重写查询的“几个原因”。保持查询不变是一个坏主意。