Mysql 1241操作数在Insert into Select中应包含1列
嘿,伙计们,我正在研究SQL,我发现了这个错误 首先,我将向您展示我的代码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
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;