gpt4 book ai didi

从多个表中选择时,MySQL JOIN 导致 "ERROR 1054 (42S22): Unknown column"

转载 作者:行者123 更新时间:2023-11-29 07:19:21 25 4
gpt4 key购买 nike

给定以下架构:

CREATE TABLE Customers
(
CustomerID INT,
FirstName VARCHAR(32),
LastName VARCHAR(32)
);

CREATE TABLE Programs
(
ProgramID INT,
ProgramName VARCHAR(32)
);

CREATE TABLE Registrations
(
RegistrationID INT,
ProgramID INT,
CustomerID INT
FirstName VARCHAR(32),
LastName VARCHAR(32)
);

我想不出这个查询应该失败的任何原因:

mysql> SELECT *
FROM Registrations R, Programs P
LEFT OUTER JOIN Customers C
ON R.CustomerID = C.CustomerID
WHERE R.ProgramID = P.ProgramID;

ERROR 1054 (42S22): Unknown column 'C.CustomerID' in 'on clause'

但通过仅选择一个表 Registrations 运行查询不会导致错误:

mysql> SELECT *
FROM Registrations R
LEFT OUTER JOIN Customers C
ON R.CustomerID = C.CustomerID;

Empty set (0.00 sec)

我错过了什么?

在您建议将 Customers 添加到 FROM 之前,CustomerID 是一个“松散”关联。由于与此问题无关的原因,有时需要使用 CustomerID 的 NULL 值将客户数据与注册数据分离。

最佳答案

问题与混合使用隐式和显式连接有关
您不能在同一个查询中使用基于逗号分隔表名列表和 where 子句的隐式连接以及显式连接。

SELECT *
FROM Registrations R
INNER JOIN Programs P ON R.ProgramID = P.ProgramID
LEFT OUTER JOIN Customers C ON R.CustomerID = C.CustomerID

关于从多个表中选择时,MySQL JOIN 导致 "ERROR 1054 (42S22): Unknown column",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57116688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com