我的MySQL JOIN大致采用以下格式:
SELECT DISTINCT employees.empl_id,
employees.name,
departments.dep_id,
departments.name,
buildings.id AS building_id,
buildings.address AS building_address
buildings.department AS building_department
FROM employees
LEFT JOIN employees USING (empl_id)
LEFT JOIN departments USING (dep_id)
LEFT JOIN buildings
ON buildings.department = departments.dep_id
当我运行此查询时,我收到错误:
ERROR 1054 (42S22) at line 1: Unknown column 'MyDB.employees.dep_id' in 'on clause'
即使员工中真的不存在dep_id
列,但我从未在JOIN中引用employees.dep_id
,dep_id
是departments
的列,而不是员工! !
这可能是由于混合了USING
和ON
条款吗?
这个JOIN是我写的脚本的一部分,它是使用MySQL版本>完成的。 5,没有发生错误。我正在调整脚本以使用旧版本的MySQL并遇到此错误。 mysql --version
收益:
mysql Ver 14.7 Distrib 4.1.22, for pc-linux-gnu (i686) using readline 4.3
我通读this,但它对我没有帮助。任何建议将不胜感激。
答案 0 :(得分:2)
重点是你在这里加入:
LEFT JOIN departments USING (dep_id)
表示
LEFT JOIN departments ON employees.dep_id = departments.dep_id
这就是导致错误的原因。