关于sql:多个INSERT查询变成了一个查询


Multiple INSERT queries turned into one single query

本问题已经有最佳答案,请猛点这里访问。

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

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

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

样品;

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

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


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

1
2
3
4
5
INSERT INTO TABLE (COLUMNS..)
VALUES(values1,value2,...),
    (values1,value2,...),
    (values1,value2,...),
    (values1,value2,...)


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

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

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

1
2
3
4
INSERT INTO mytable (col1, col2, col3, ...)
SELECT 1, 2843, 0, ...
UNION ALL
SELECT 2, 7853, 0, ...;

在Oracle等后向数据库中,您必须使用人工单行表DUAL对第二个选项进行编码:

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


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

1
2
3
4
  INSERT INTO `creature` ( <FIELD list> ) VALUES
    ( <VALUE list> ),
    ( <VALUE list> ),
    ( <VALUE list> )