在单个SQL查询中插入多行?

时间:2009-01-17 05:55:54

标签: sql sql-server tsql insert

我有多组数据要一次插入,比如4行。

我的表格有三列:PersonIdOffice

INSERT INTO MyTable VALUES ("John", 123, "Lloyds Office");
INSERT INTO MyTable VALUES ("Jane", 124, "Lloyds Office");
INSERT INTO MyTable VALUES ("Billy", 125, "London Office");
INSERT INTO MyTable VALUES ("Miranda", 126, "Bristol Office");

我可以insert一个SQL statement中的所有4行吗?

4 个答案:

答案 0 :(得分:2069)

在SQL Server 2008中,您可以使用单个SQL INSERT语句插入多行。

INSERT INTO MyTable ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )

有关参考,请参阅MOC课程2778A - 在SQL Server 2008中编写SQL查询。

例如:

INSERT INTO MyTable
  ( Column1, Column2, Column3 )
VALUES
  ('John', 123, 'Lloyds Office'), 
  ('Jane', 124, 'Lloyds Office'), 
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office');

答案 1 :(得分:760)

如果要插入单个表,可以像这样编写查询(可能只在MySQL中):

INSERT INTO table1 (First, Last)
VALUES
    ('Fred', 'Smith'),
    ('John', 'Smith'),
    ('Michael', 'Smith'),
    ('Robert', 'Smith');

答案 2 :(得分:128)

注意:这个答案适用于SQL Server 2005.对于SQL Server 2008及更高版本,有更好的方法,如其他答案所示。

您可以使用INSERT with SELECT UNION ALL

INSERT INTO MyTable  (FirstCol, SecondCol)
    SELECT  'First' ,1
    UNION ALL
SELECT  'Second' ,2
    UNION ALL
SELECT  'Third' ,3
...

仅适用于小型数据集,对于您的4条记录应该没问题。

答案 3 :(得分:76)

使用INSERT语法的

VALUES语句可以插入多行。为此,请包含多个列值列表,每个列值都括在括号内并用逗号分隔。

示例:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);