我想從一個select語句插入到多個表中。可能嗎?如何從一個SELECT語句插入到多個表中
這是我想在這裏做的事:
insert into table1 (Name, Address)
insert into table2 (Name, Address)
select Name, Address from MainTable
我想從一個select語句插入到多個表中。可能嗎?如何從一個SELECT語句插入到多個表中
這是我想在這裏做的事:
insert into table1 (Name, Address)
insert into table2 (Name, Address)
select Name, Address from MainTable
可以使用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');
查詢
INSERT INTO @T1 (Name, Address)
OUTPUT inserted.Name, inserted.Address INTO @T2 (Name, Address)
SELECT Name, Address
FROM @MainTable
;
結果
SELECT * FROM @T1;
SELECT * FROM @T2;
+-------+----------+
| Name | Address |
+-------+----------+
| Name1 | Address1 |
| Name2 | Address2 |
| Name3 | Address3 |
+-------+----------+
+-------+----------+
| Name | Address |
+-------+----------+
| Name1 | Address1 |
| Name2 | Address2 |
| Name3 | Address3 |
+-------+----------+
執行計劃
+1總的來說,我喜歡這個('OUTPUT'條款非常方便),但我仍然很好奇O.P.的實際目標是什麼。似乎可能僅僅是不需要運行查詢兩次,但仍然如此。 –
@srutzky,是的,這將是很好的知道實際問題。在這個簡單的例子中,執行計劃很簡單,甚至沒有任何臨時表 - 兩個INSERT鏈接在一起。對於複雜的SELECT查詢,它可能會有所不同。 –
@VladimirBaranov。 。 。你在技術上是正確的。我只用'OUTPUT'和表變量,所以我忘記它適用於任何表。此外,只能將值插入到第一個表中的第二個表中。 –
這是不可能用一個語句。但是,你爲什麼要這樣做? –
table1上的觸發器怎麼樣?添加到table2插入... – bri
@GordonLinoff,它**是**可能在SQL Server 2008中的單個語句中 - 'OUTPUT'子句可以做到這一點。 (至少對於兩個目的地表)。 –