Sql 将多个插入查询转换为单个查询

Sql 将多个插入查询转换为单个查询,sql,Sql,我已经在Stackoverflow中搜索过了,没有什么能正确回答我的问题 我的问题是如何将多个INSERT查询转换为一个INSERT查询 更具体;这个。这就是我需要了解如何将问题转化为单个问题的问题 样品 INSERT INTO `creature` (`guid`, `id`, ...) VALUES (1, 2843, ...); INSERT INTO `creature` (`guid`, `id`, ...) VALUES (2, 7853, ...); 有10

我已经在Stackoverflow中搜索过了,没有什么能正确回答我的问题

我的问题是如何将多个INSERT查询转换为一个INSERT查询

更具体;这个。这就是我需要了解如何将问题转化为单个问题的问题

样品

INSERT INTO `creature` (`guid`, `id`, ...) 
     VALUES (1, 2843, ...);
INSERT INTO `creature` (`guid`, `id`, ...)
     VALUES (2, 7853, ...);

有1000个这样的,需要变成一个。我衷心感谢在这方面能得到的任何帮助。

如果您使用的是Sql Server,请尝试以下方法

Insert into table (columns..)
Values(values1,value2,...), 
    (values1,value2,...),
    (values1,value2,...),
    (values1,value2,...)

最接近的是只需要字段列表一次的速记版本:

  INSERT INTO `creature` ( <field list> ) VALUES
    ( <value list> ),
    ( <value list> ),
    ( <value list> )
插入到“生物”()值中
(  ),
(  ),
(  )
在Mysql中,执行以下操作(大多数流行的数据库都有类似的语法):

在大多数数据库中,可以执行以下操作:

INSERT INTO mytable (col1, col2, col3, ...)
SELECT 1, 2843, 0, ...
UNION ALL
SELECT 2, 7853, 0, ...;
在向后的时代数据库(如Oracle)中,必须使用人工单列表DUAL对第二个选项进行编码:

INSERT INTO mytable (col1, col2, col3, ...)
SELECT 1, 2843, 0, ...
FRIM DUAL
UNION ALL
SELECT 2, 7853, 0, ...
FROM DUAL;

+1也适用于MySQLWhich数据库?@Denis cryptic,但我明白了:)第二个语句不完全正确。在Oracle中(从10gR2开始),您必须执行
选择12843,0。。。从DUAL和Jet-SQL(又名Access)中,没有等价物。不过,对于SQL Server来说,取消FROM子句绝对有效。@cheran OK谢谢你提醒我。我已经更新了我的答案,添加了这个Oracle特性。
INSERT INTO mytable (col1, col2, col3, ...)
SELECT 1, 2843, 0, ...
FRIM DUAL
UNION ALL
SELECT 2, 7853, 0, ...
FROM DUAL;