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

我有多组数据要一次插入,比如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");

我可以在一个SQL语句中插入所有4行吗?

3153403 次浏览

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

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

注:此答案适用于SQLServer 2005。对于SQLServer 2008及更高版本,有更好的方法,如其他答案所示。

您可以使用插入SELECT UNION ALL

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

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

在SQLServer 2008中,您可以使用单个SQLINSERT语句插入多行。

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

请参阅MOC课程2778A-在SQLServer 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');

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

示例:

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