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

标签 sql sql-server sql-server-2008 tsql

我试图从一个 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 |
+-------+----------+

执行计划

insert with output

关于sql - 如何从一个 SELECT 语句插入多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107078/

相关文章:

sql - PostgreSQL 通配符 LIKE 用于子查询返回的任何单词列表

php - MySQL:如何对 ORDER 使用 IF 条件

c# - 在 SSMS 中运行良好的 SQL 查询在 ASP.NET 中运行非常慢

sql-server - SQL : Storing guids

sql-server - 当child id包含 '.'时sql server中的分层排序

mysql - 从左连接表中选择多个条件为真的行

sql - psql 你如何从复合数组中选择

c# - 如何在 C# 中使用 Dapper 将对象放入字典中?

sql-server - SELECT DISTINCT 并进行重复检查

sql - 先进先出 (FIFO) 库存成本核算