我以前在另一个查询中遇到过这个问题,在该查询中我没有像期望的那样在查询之前包含表名,但是对于今天的问题,我不确定为什么会引发此错误,因为在JOIN发生之前很清楚地提到了表名:

SELECT
  TKOPOCs.Name
  EightIDs.Email
  Cranes.CraneName
FROM
  Cranes, EightIDs
  INNER JOIN TKOPOCS
     ON Cranes.CraneID = TKOPOCs.CraneID
  INNER JOIN Mills
     ON Cranes.MILLID = Mill.MillID
WHERE EightIDs.EID = TKOPOCs.EID


发生异常或Cranes.CraneID和Cranes.MILLID,但是查询的SELECT部分​​中的项目似乎正常工作-当我键入“ Cranes”时,它甚至自动填充列名称。因此,它非常清楚地知道Crane表是什么,表中有什么,那么可能是什么引起了问题呢?

最佳答案

JOIN链在逻辑上(从左到右)在逗号分隔的表之前进行评估。在连接链中包括起重机,以使其可用的列:

SELECT
  TKOPOCs.Name
  EightIDs.Email
  Cranes.CraneName
FROM
  Cranes
  INNER JOIN TKOPOCS
     ON Cranes.CraneID = TKOPOCs.CraneID
  INNER JOIN Mills
     ON Cranes.MILLID = Mill.MillID
  INNER JOIN EightIDs
     ON EightIDs.EID = TKOPOCs.EID

10-04 16:06