1

可能重复:
是:不是唯一的表 :: 现在:#1054 - 未知列 - 不明白为什么?

在解决了这个查询的上一个问题之后,我现在遇到了这个错误:

1054 - 'on 子句'中的未知列'calendar_events.jobID'

我不明白为什么……而且该专栏确实存在!它与底部查询的 WHERE blah AND ... 部分有关吗?

SELECT calendar_events.* , 
       calendar_users.doctorOrNurse, 
       calendar_users.passportName, 
       calendar_jobs.destination
  FROM `calendar_users` , `calendar_events`
INNER JOIN `calendar_jobs` ON `calendar_events.jobID` = `calendar_jobs.jobID`
     WHERE `start` >=0
       AND calendar_users.userID = calendar_events.userID

任何帮助,将不胜感激!

干杯

4

2 回答 2

2
You should use `calendar_events`.`jobID` instead of `calendar_events.jobID`. 
于 2010-06-11T11:03:00.823 回答
1

在没有连接条件的情况下,INNER JOIN 和 ,(逗号)在语义上是等效的:两者都在指定的表之间产生笛卡尔积(即,第一个表中的每一行都连接到第二个表中的每一行)。

但是,逗号运算符的优先级低于 INNER JOIN、CROSS JOIN、LEFT JOIN 等。如果在存在连接条件时将逗号连接与其他连接类型混合使用,则可能会出现“on 子句”中的“未知列”“col_name”形式的错误。本节稍后将提供有关处理此问题的信息。

来自: http ://dev.mysql.com/doc/refman/5.0/en/join.html

希望这可以帮助

于 2010-06-11T09:23:39.413 回答