Mysql 1241操作数在Insert into Select中应包含1列

Mysql 1241操作数在Insert into Select中应包含1列,mysql,sql,Mysql,Sql,嘿,伙计们,我正在研究SQL,我发现了这个错误 首先,我将向您展示我的代码 Insert into HistoriqueEquipement (DateMHS,CodeEquipement,nomenclature) VALUES (2015-03-28, (SELECT CodeEquipement,nomenclature FROM equipement WHERE Numero_Serie =241)); 我得到了错误1241-操作数应该包含1列; 如果我使用 Insert in

嘿,伙计们,我正在研究SQL,我发现了这个错误

首先,我将向您展示我的代码

Insert into HistoriqueEquipement  (DateMHS,CodeEquipement,nomenclature) VALUES (2015-03-28, (SELECT  CodeEquipement,nomenclature FROM equipement WHERE Numero_Serie =241));
我得到了错误1241-操作数应该包含1列; 如果我使用

  Insert into HistoriqueEquipement  (DateMHS,CodeEquipement) VALUES (2015-03-28, (SELECT  CodeEquipement FROM equipement WHERE Numero_Serie =241));

它工作得很好,所以问题出在哪里我想插入许多列而不是一列,我想您会遇到这个错误,因为SELECT返回的行不止一行。因此,您可以使用“插入到表中”选项,如下所示:

Insert into HistoriqueEquipement  (DateMHS,CodeEquipement,nomenclature) 
SELECT  CURDATE(), CodeEquipement, nomenclature 
FROM equipement 
WHERE Numero_Serie =241;
你应该使用插入。选择,您可以将其与常量一起使用:

Insert into HistoriqueEquipement (DateMHS,CodeEquipement) 
    SELECT '2015-03-28', CodeEquipement
    FROM equipement
    WHERE Numero_Serie = 241;
注:

如果只需要一行,则添加限制1。 即使使用值,也需要在日期周围加上单引号。2015-03-28评估为1984思考减法。然后将其视为日期。 由于子查询选择了 编码设备,设备名称,其中编号=241 返回多个结果

如果要在表中插入一行,可以尝试:

Insert into HistoriqueEquipement  (DateMHS,CodeEquipement,nomenclature) 
VALUES (2015-03-28, 
(SELECT  top 1 CodeEquipement,nomenclature FROM equipement WHERE Numero_Serie =241));
如果要将所有记录从Equipment表插入HistoryQueeQueePement表

然后您可以使用:


错误是因为子查询返回两列CodeEquipment和Nomenclaration,并且应该是一个CodeEquipment的值。您需要将其分为两个子查询,每列一个子查询,或者将查询转换为联接以完成您试图完成的操作是的,我知道它返回到两个子查询,但我如何做可以更轻松地解释如何关闭问题!!
Insert into HistoriqueEquipement(DateMHS,CodeEquipement) 
    SELECT '2015-03-28',CodeEquipement
    FROM equipement
    WHERE Numero_Serie = 241;