MYSQL:错误1054(42S22):未知列';id#u员工';在';第'条;
我有两张桌子 i) 订单详情: ii)雇员:MYSQL:错误1054(42S22):未知列';id#u员工';在';第'条;,mysql,Mysql,我有两张桌子 i) 订单详情: 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=l
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 ;
我想获得员工3负责的订单的名字、姓氏和详细信息。我用了这个:
SELECT lastname, firstname, content FROM order_details INNER JOIN employees USING (id_employee) WHERE id_employee = 3;
但我收到了这个错误消息:
错误1054(42S22):“from子句”中的“id_employee”列未知,并且不知道它来自何处:(您正在使用(id_employee)加入)但这不存在于您的employees表中。因此,将employees id与order\u details
关联起来,它确实有一个id\u employees
列,但employees表没有。使用
SELECT lastname, firstnam, content
FROM order_details od
INNER JOIN employees e on od.id_employee = e.id
WHERE od.id_employee = 3;
为了连接不同的列名。如果两个表中的列名相同,则可以使用using
。当使用using
时,两个表中的列名必须相同。employee
表中没有id\u employee
。因此,您应该改用它使用
上的条件连接两个表:
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;
发件人:
USING(column_list)子句指定必须存在的列的列表
如果表a和b都包含c1、c2和c3列,
下面的联接比较两个表中的相应列
当怀疑缺少列时 检查创建表时键入的内容
SHOW CREATE TABLE table_name
或者只查看表中的列
DESC table_name
在调试此类错误时,这会很有帮助
DESC table_name