有点难以用SQL术语来解释,因为我使用的是内部技术,但是假设我有一个结构数组(类似于我们在C#,C ++等中使用的结构),我想插入它的值在一张桌子里。 所以一种方法是迭代数组的psedu代码,读取结构的字段并将它们插入表中,如下所示:
for int i =1 to array.Lenght
{
insert into MyTable values
{
MyTable.Field1 = array[i].Field1;
//etc ...
}
}
但这很糟糕,因为表现很好。如果数组有十个元素,我们调用insert方法十次。 应该有一个brillinat方式这样做只有一个插入,以某种方式使用表上的JOINS并只调用插入一次,但我无法想象如何做到这一点......
对此有任何想法都是受欢迎的。
感谢。
答案 0 :(得分:5)
使用单个查询将多个记录插入MySQL:
INSERT INTO example
(example_id, name, value, other_value)
VALUES
(100, 'Name 1', 'Value 1', 'Other 1'),
(101, 'Name 2', 'Value 2', 'Other 2'),
(102, 'Name 3', 'Value 3', 'Other 3'),
(103, 'Name 4', 'Value 4', 'Other 4');
http://www.electrictoolbox.com/mysql-insert-multiple-records/
答案 1 :(得分:1)
这可确保查询执行一次。这只是一个想法,避免多次调用插入
@sql = 'insert into mytable(col_1) values'
for int i =1 to array.Lenght
{
if(i > 1)
@sql = ',('+@sql + array[i].Field1+')'
else
@sql = '('+@sql + array[i].Field1+')'
}
@sql = @sql + ';'
exec @sql
脚本看起来像
insert into mytable(col_1) values
(1),(2),(3);