如何从一个SELECT语句插入多个表

moe*_*moe 1 sql t-sql sql-server sql-server-2008

我试图从一个select语句插入多个表.可能吗?

这是我在这里要做的:

insert into table1 (Name, Address)
insert into table2 (Name, Address)
select Name, Address from MainTable
Run Code Online (Sandbox Code Playgroud)

Vla*_*nov 9

您可以使用该OUTPUT子句插入第二个表.如果要插入两个以上的表,则必须使用其他一些方法.

样本数据

DECLARE @MainTable TABLE (Name nvarchar(50), Address nvarchar(50));
DECLARE @T1 TABLE (Name nvarchar(50), Address nvarchar(50));
DECLARE @T2 TABLE (Name nvarchar(50), Address nvarchar(50));

INSERT INTO @MainTable (Name, Address) VALUES
('Name1', 'Address1'),
('Name2', 'Address2'),
('Name3', 'Address3');
Run Code Online (Sandbox Code Playgroud)

询问

INSERT INTO @T1 (Name, Address)
OUTPUT inserted.Name, inserted.Address INTO @T2 (Name, Address)
SELECT Name, Address
FROM @MainTable
;
Run Code Online (Sandbox Code Playgroud)

结果

SELECT * FROM @T1;
SELECT * FROM @T2;


+-------+----------+
| Name  | Address  |
+-------+----------+
| Name1 | Address1 |
| Name2 | Address2 |
| Name3 | Address3 |
+-------+----------+

+-------+----------+
| Name  | Address  |
+-------+----------+
| Name1 | Address1 |
| Name2 | Address2 |
| Name3 | Address3 |
+-------+----------+
Run Code Online (Sandbox Code Playgroud)

执行计划

插入输出

  • 使用merge进行插入的@GordonLinoff将使输出子句中的源表中的任何列可用http://stackoverflow.com/q/5365629/73226 (3认同)