Mysql on子句中的列未知,即使该列存在

Mysql on子句中的列未知,即使该列存在,mysql,Mysql,以下MySQL 5.7.19脚本引发错误代码:1054。“on子句”中的未知列“ps.employeeId” 脚本运行时没有错误,因为我删除了FROM子句中的第二个表 , tableFO AS `fo` 或替换ON条款 `wa`.`employeeId` = `ps`.`employeeId` 与 可以使用以下命令创建表 CREATE TABLE tablePS ( `id` INT UNSIGNED auto_increment, `employee

以下MySQL 5.7.19脚本引发错误代码:1054。“on子句”中的未知列“ps.employeeId”

脚本运行时没有错误,因为我删除了FROM子句中的第二个表

,
        tableFO AS `fo`
或替换ON条款

    `wa`.`employeeId` = `ps`.`employeeId`

可以使用以下命令创建表

CREATE TABLE tablePS (
    `id` INT UNSIGNED auto_increment,
    `employeeId` INT UNSIGNED,
    PRIMARY KEY `id` (`id`)
);

CREATE TABLE tableFO (
    `id` INT UNSIGNED auto_increment,
    PRIMARY KEY `id` (`id`)
);

CREATE TABLE tableWA (
    `id` INT UNSIGNED auto_increment,
    `employeeId` INT UNSIGNED,
    PRIMARY KEY `id` (`id`)
);
怎么了?

试试看

SELECT
    `ps`.`employeeId`
FROM
    tablePS AS `ps`
CROSS JOIN
    tableFO AS `fo`
LEFT JOIN
   tableWA AS `wa`
ON
    `wa`.`employeeId` = `ps`.`employeeId`

错:我们看不到有问题的桌子,是吗?我们无法看到它们,因为您没有发布表create语句。那怎么了?唯一可能的结论是该列不存在。就像MySQL告诉你的那样,我正在试图找到一个简化的CREATETABLE语句。问题更新。如果你对tablePS和tableFO使用显式连接,而不是用逗号分隔它们,会发生什么?我发现PS和FO不相关有点奇怪;交叉联接通常不是正确的联接类型。别误会,有时间和地点可以使用交叉连接;但是,如果不了解表中的实际数据,实体跟踪是什么,业务案例就不能说明这里的方法是否正确。正如前面提到的。请不要将“FROM”列表中逗号分隔的表与使用“ON”子句的直接联接混合使用。这将使其他程序员和SQL解析器都感到困惑:-/
CREATE TABLE tablePS (
    `id` INT UNSIGNED auto_increment,
    `employeeId` INT UNSIGNED,
    PRIMARY KEY `id` (`id`)
);

CREATE TABLE tableFO (
    `id` INT UNSIGNED auto_increment,
    PRIMARY KEY `id` (`id`)
);

CREATE TABLE tableWA (
    `id` INT UNSIGNED auto_increment,
    `employeeId` INT UNSIGNED,
    PRIMARY KEY `id` (`id`)
);
SELECT
    `ps`.`employeeId`
FROM
    tablePS AS `ps`
CROSS JOIN
    tableFO AS `fo`
LEFT JOIN
   tableWA AS `wa`
ON
    `wa`.`employeeId` = `ps`.`employeeId`