在1个查询mysql中插入多行

时间:2016-01-12 08:56:58

标签: php mysql

我已经在stackoverflow上搜索了这个,发现了这个: Inserting multiple rows in mysql

可悲的是,当我尝试这个时,它对我不起作用。

当我得到这样的查询时:

INSERT INTO productielijn1
(Datum, Productieomschrijving, Aantal, AantalGemaakt, Verschil)
VALUES
('2016-01-12', '2016-01-12'),
('test1', 'test2'),
(1, 2),
(0, 0),
(0, 0);

它给了我以下错误:

#1136 - Column count doesn't match value count at row 1

即使我添加()arround我的值如下:

INSERT INTO productielijn1
(Datum, Productieomschrijving, Aantal, AantalGemaakt, Verschil)
VALUES
(('2016-01-12', '2016-01-12'),
('test1', 'test2'),
(1, 2),
(0, 0),
(0, 0));

它给了我以下错误:

#1241 - Operand should contain 1 column(s) 

那么如何解决这个问题并添加多行1个查询?

4 个答案:

答案 0 :(得分:3)

更改为:

INSERT INTO productielijn1
(Datum, Productieomschrijving, Aantal, AantalGemaakt, Verschil)
VALUES
('2016-01-12', 'test1', 1,0,0),
('2016-01-12', 'test2',2,0,0);

您必须按行添加值。

答案 1 :(得分:1)

您在2列以上插入2个值,您的查询可以是:

INSERT INTO productielijn1
(Datum, Productieomschrijving)
VALUES
(('2016-01-12', '2016-01-12'),
('test1', 'test2'),
(1, 2),
(0, 0),
(0, 0));

或:

INSERT INTO productielijn1
(Datum, Productieomschrijving, Aantal, AantalGemaakt, Verschil)
VALUES
(('2016-01-12', '2016-01-12', '', '', ''),
('test1', 'test2', '', '', ''),
(1, 2, '', '', ''),
(0, 0, '', '', ''),
(0, 0, '', '', ''));

答案 2 :(得分:0)

在您的查询中:

INSERT INTO productielijn1
(Datum, Productieomschrijving, Aantal, AantalGemaakt, Verschil)
VALUES
('2016-01-12', '2016-01-12'),
('test1', 'test2'),
(1, 2),
(0, 0),
(0, 0);

字段列表有5列,其中值列表只有两列。

从字段列表中删除三个或在列列表中添加三个。

解决方案:

将默认值添加到三个剩余值列:

INSERT INTO productielijn1
(Datum, Productieomschrijving, Aantal, AantalGemaakt, Verschil)
VALUES
('2016-01-12', '2016-01-12', '', '', ''),
('test1', 'test2', '', '', ''),
(1, 2, '', '', ''),
(0, 0, '', '', ''),
(0, 0, '', '', ''),;

答案 3 :(得分:0)

每组值应与列数相匹配,因此如果剩余的3个字段应保持为空,只需将它们添加到集合中,或用相应的值填充它们:

INSERT INTO productielijn1
(Datum, Productieomschrijving, Aantal, AantalGemaakt, Verschil)
VALUES
('2016-01-12', '2016-01-12','','',''),
('test1', 'test2','','',''),
(1, 2,'','',''),
(0, 0,'','',''),
(0, 0,'','','');