仅使用一个insert commnad在一个表中插入多行 在SQL术语中有点难以解释,因为我使用的是内部技术,但是我假设我有一个类似于C、C++等结构的数组,我想把它的值插入表中。 其中一种方法是psedu代码,它遍历数组,读取结构的字段并将它们插入表中,如下所示: for int i =1 to array.Lenght { insert into MyTable values { MyTable.Field1 = array[i].Field1; //etc ... } }

仅使用一个insert commnad在一个表中插入多行 在SQL术语中有点难以解释,因为我使用的是内部技术,但是我假设我有一个类似于C、C++等结构的数组,我想把它的值插入表中。 其中一种方法是psedu代码,它遍历数组,读取结构的字段并将它们插入表中,如下所示: for int i =1 to array.Lenght { insert into MyTable values { MyTable.Field1 = array[i].Field1; //etc ... } },sql,Sql,但这是不好的,因为表现不佳。若数组有十个元素,我们将调用insert方法十次。 应该有一种很好的方法,只需一次插入,在表上使用连接,只需调用一次插入,但我无法想象如何做到这一点 欢迎对此有任何想法 谢谢 通过一个查询将多条记录插入MySQL: INSERT INTO example (example_id, name, value, other_value) VALUES (100, 'Name 1', 'Value 1', 'Other 1'), (101, 'Name 2', '

但这是不好的,因为表现不佳。若数组有十个元素,我们将调用insert方法十次。 应该有一种很好的方法,只需一次插入,在表上使用连接,只需调用一次插入,但我无法想象如何做到这一点

欢迎对此有任何想法


谢谢

通过一个查询将多条记录插入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');

这确保查询执行一次。这只是一个想法,避免多次呼叫插入

@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);

SQL Server、Oracle、MySQL等等?另外,您从OOP语言调用命令,或者您正在寻找一个纯粹基于SQL脚本的解决方案?那么INSERT INTO SELECT呢?有点难以用SQL术语解释,因为我使用的是一种内部技术。您真的在要求我们提出一种更有效的方法来插入我们一无所知的专有内部技术吗?如果不了解这项技术,我们究竟如何知道它的优点、缺点和性能提示?当您明确地说它不是SQL时,为什么要将其标记为SQL?如果没有更多的细节,这不是一个可以回答的问题。@DavidStratton:把它想象成PL-SQL或jsut-SQL,看看你是否能在那里解决它。以后我的语言也会如此。你怎么知道他们在使用mySQL?SQL Server 2008也是如此-