我的(不是复杂的)MySQL查询到底是什么问题?

时间:2012-01-11 14:24:02

标签: mysql mysql-error-1064 natural-join

我可能对两只眼睛都视而不见,但是通过很多版本迭代并尝试...删除了连字符和AS语句......

我总是从我的MySql5.1服务器解析错误1064。 我真的相信这是有效的,SQL Answers:

有什么建议吗?

SELECT (dpa_articles.name, [...] corporations.isin) FROM corporations 
NATURAL JOIN corporations_dpa_articles ON (corporations.id = corporations_dpa_articles.corporation_id)
NATURAL JOIN dpa_articles ON (dpa_articles.id = corporations_dpa_articles.dpa_article_id)
NATURAL JOIN dpa_articles_dpa_categories ON (dpa_articles.id = dpa_articles_dpa_categories.dpa_article_id)
WHERE dpa_articles_dpa_categories.dpa_category_id = 28
  

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'ON附近使用正确的语法(companies.id = corporations_dpa_articles.corporation_id)   自然加入第3行的dpa_a'

非常感谢你。

2 个答案:

答案 0 :(得分:2)

NATURAL JOIN不应该有ON条款。

连接条件是隐式的,基于列名。

您需要INNER JOIN,因为列名不同。 id无法自然加入corporation_id

答案 1 :(得分:0)

您是否尝试在联接语句中解包ON子句?

此外,您可能需要考虑使用与natural join不同的联接。 Natural join并没有像其他连接方法那样给你足够的控制权,我不确定指定它加入的列是否有效。 <{1}} 可能更合适。