SQL Server - 使用单个( ANSI 样式)语句插入多行
对于 SQL Server 2000+
根据SQL The Complete Reference,第三版(2009 年 8 月 12 日):
1) 多行插入的语法是
INSERT INTO table-name (columns not mandatory)
query
(第 236 页,图 10-3)。
2) SELECT 语句必须有 FROM 子句(第 87 页,图 6-1)。
因此,在这种情况下,要仅使用一条语句插入多行,INSERT
我们需要一个只有一行的辅助表:
CREATE TABLE dual(value INT PRIMARY KEY CHECK(value = 1))
INSERT dual(value) VALUES(1)
进而
INSERT INTO table-name (columns) -- the columns are not mandatory
SELECT values FROM dual
UNION ALL
SELECT another-values FROM dual
UNION ALL
SELECT another-values FROM dual
编辑 2:对于 SQL Server 2008+
从 SQL Server 2008 开始,我们可以使用行构造函数:((values for row 1), (values for row 2), (values for row 3), etc.
第 218 页)。
所以,
INSERT INTO TestInsert
VALUES (1,'a'), --The string delimiter is ' not ‘...’
(2,'b'),
(3,'c'),
(4,'d'),
(5,'e')
将适用于 SQL Server 2008+。