从SQL Server 2016中的一个选择中插入数据到两个表中
我正在尝试编写一个数据库脚本来插入select中的数据。 但现在有一个数据库中的编辑,我需要插入相同的数据,但在两个表中,而不是一个与外键。从SQL Server 2016中的一个选择中插入数据到两个表中
表:
-
Membership
:ID,角色,帐户名,... -
MembershipMapper
:身份证,MembershipId,角色
我写这个剧本:
INSERT INTO [server1].[dbo].[Memberships] ([Role], [AccountName] .....)
SELECT
[Role],
[AccountName],
......
FROM
[server2].[dbo].[Memberships]
但现在Role
在另一个表中。如何插入它?有任何想法吗?
你可能需要一个JOIN
:
INSERT INTO [server1].[dbo].[Memberships] ([Role], [AccountName] .....)
SELECT
s.[Role],
m.[AccountName],
......
FROM
[server2].[dbo].[Memberships] m
INNER JOIN
[server2].[dbo].[SomeOtherTable] s ON m.ID = s.ID -- or whatever links the two tables.....
恐怕你误解了我的问题,我不想从两个选择中插入到一个表中,我想从一个选择中插入到两个表中。 –
@SamySammour:你**不能**那样做。一个插入只能进入**一个表**。 –
好的,那么你的建议是什么?插入每一个单独? –
可能尝试是这样的
INSERT INTO [server1].[dbo].[Memberships]
([Role]
,[AccountName]
.....)
SELECT memmap.[Role]
,mem.[AccountName]
......
FROM [server2].[dbo].[Memberships] AS mem
JOIN [server2].[dbo].[MembershipMapper] AS memmap
ON mem.id = memmap.MembershipId
恐怕你误解我的问题,我不想从两个选择中插入一个表,我想从一个选择 –
呢?
INSERT INTO [server1的]。[DBO]。[成员]([作用],[帐户] .....)
OUTPUT [ID],[作用] INTO MembershipMapper(MembershipId,角色)
SELECT
[Role],
[AccountName],
......
FROM
[server2].[dbo].[Memberships]
中插入两个表,因为我没有成员中的Role列,我只在MembershipMapper中拥有它 –
最后你提到'角色'列来自另一个表。那么你的意思是你是从一个select语句中的两个表中插入数据到'Membership'和'MembershipMapper'表中?如果是这样,您将需要加入。如果不是,那么你将只需将数据分别插入到表中,因为Sql Server不支持在单个INSERT语句中插入多表。 –