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

时间:2015-03-28 19:22:11

标签: 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 into HistoriqueEquipement  (DateMHS,CodeEquipement) VALUES (2015-03-28, (SELECT  CodeEquipement FROM equipement WHERE Numero_Serie =241));

它完美地工作,所以问题是我想插入许多列而不仅仅是一个

3 个答案:

答案 0 :(得分:0)

我认为您收到此错误,因为rows返回的SELECT不止一个。所以你可以使用这样的INSERT INTO TABLE SELECT

Insert into HistoriqueEquipement  (DateMHS,CodeEquipement,nomenclature) 
SELECT  CURDATE(), CodeEquipement, nomenclature 
FROM equipement 
WHERE Numero_Serie =241;

答案 1 :(得分:0)

您应该使用insert . . . select,并且可以使用常量:

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

注意:

  • 如果您只想要一行,请添加limit 1
  • 即使使用值,您也需要在日期周围使用单引号。 2015-03-28评估为1984(想想"减法")。然后将其视为日期。

答案 2 :(得分:0)

  

您获得的错误,因为您的子查询SELECT CodeEquipement,nomenclature FROM equipement WHERE Numero_Serie =241   返回超过1个结果。

如果您想在表格中插入一行,那么您可以尝试:

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

如果要将equipement表中的所有记录插入HistoriqueEquipement表。

然后你可以使用:Insert into select

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