-3
选择一个数据
    FROM 认证 a,认证 b
    LEFT JOIN 认证 c ON a.id = c.id

为什么此查询会产生“#1054 - 'on 子句'中的未知列 'a.id'”

选择一个数据
    FROM 认证
    LEFT JOIN 认证 c ON a.id = c.id

没关系?

4

3 回答 3

7

ON问题是您正在混合 JOIN 语法,因此您使用的别名在条件中不可用。您不应该混合 JOIN 语法。

您的查询应该是:

SELECT a.data 
FROM Authentications a
CROSS JOIN Authentications b 
LEFT JOIN Authentications c 
   ON a.id = c.id

或者,如果您要加入b,那么您将使用:

SELECT a.data 
FROM Authentications a
INNER JOIN Authentications b 
  on a.id = b.id
LEFT JOIN Authentications c 
   ON a.id = c.id

JOIN优先级高于逗号,因此 的别名a不可用于ON.

于 2013-04-11T17:30:41.893 回答
0

首先查询您将 b 加入 c 并在 a 上设置条件。

没有加入 a

于 2013-04-11T17:23:23.023 回答
0

'on' 子句必须使用正在连接的表中的列 - 例如 SELECT a.data FROM Authentications a, Authentications b LEFT JOIN Authentications c ON b.id = c.id where a.id = b.id

或类似的东西

于 2013-04-11T17:29:22.660 回答