多个INSERT查询转换为一个查询

时间:2013-05-05 12:48:52

标签: sql

我搜索过Stackoverflow,没有一个能正确回答我的问题。

我的问题是如何将多个INSERT查询转换为单个插入查询。

更具体; https://gist.github.com/gregariousjb/e73fdf1489acbbb63651这一个。这是我需要了解如何制作单个查询的查询。

示例;

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

其中有1000个,需要变成一个。我真诚地感谢我能得到的任何帮助。

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

在Mysql中,这样做(大多数流行的数据库都有类似的语法):

INSERT INTO mytable (col1, col2, col3, ...) VALUES
(1, 2843, 0, ...),
(2, 7853, 0, ...);

在大多数数据库中,您可以这样做:

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;

答案 2 :(得分:2)

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

  INSERT INTO `creature` ( <field list> ) VALUES
    ( <value list> ),
    ( <value list> ),
    ( <value list> )