MYSQL:错误 1054 (42S22):“from 子句”中的未知列“id_employee”

Kat*_*tie 3 mysql

我有两张桌子。

i) 订单详情:

CREATE TABLE `order_details` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `content` text,
  `id_employee` INT(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_id_employee` (`id_employee`),
  CONSTRAINT `FK_id_employee` FOREIGN KEY (`id_employee`) REFERENCES `employees` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

ii) 员工:

 CREATE TABLE `employees` (   `id` INT(11) NOT NULL AUTO_INCREMENT,   `firstname` text NOT NULL,   `lastname` text NOT NULL,   `salary` FLOAT DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 ;
Run Code Online (Sandbox Code Playgroud)

我想获取员工 3 负责的名字、姓氏和订单的详细信息。我用过这个:

SELECT lastname, firstname, content FROM order_details INNER JOIN employees USING (id_employee) WHERE id_employee = 3;
Run Code Online (Sandbox Code Playgroud)

但我收到此错误消息:ERROR 1054 (42S22): Unknown column 'id_employee' in 'from clause'并且不知道它来自哪里:(

Tar*_*ryn 5

使用时USING,两个表中的列名必须相同。你没有一个id_employeeemployee表中。所以你应该使用它来代替它使用ON条件来连接两个表:

SELECT e.lastname, e.firstnam, o.content 
FROM order_details o
INNER JOIN employees e
  ON  o.id_employee = e.id 
WHERE o.id_employee = 3;
Run Code Online (Sandbox Code Playgroud)

来自MySQL 文档

USING(column_list) 子句命名必须存在于两个表中的列列表。如果表 a 和 b 都包含列 c1、c2 和 c3,则以下连接比较两个表中的对应列