5

我已经通过 Stackoverflow 进行了搜索,但没有正确回答我的问题。

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

更详细; https://gist.github.com/gregariousjb/e73fdf1489acbbb63651这个。这就是我需要了解如何将其组合成一个的查询。

样本;

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

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

4

3 回答 3

5

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

Insert into table (columns..)
Values(values1,value2,...), 
    (values1,value2,...),
    (values1,value2,...),
    (values1,value2,...)
于 2013-05-05T12:51:33.950 回答
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;
于 2013-05-05T12:54:25.950 回答
2

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

  INSERT INTO `creature` ( <field list> ) VALUES
    ( <value list> ),
    ( <value list> ),
    ( <value list> )
于 2013-05-05T12:52:07.583 回答