2016-11-07 222 views
0

我正在尝试编写一个数据库脚本来插入select中的数据。 但现在有一个数据库中的编辑,我需要插入相同的数据,但在两个表中,而不是一个与外键。从SQL Server 2016中的一个选择中插入数据到两个表中

表:

  • Membership:ID,角色,帐户名,...
  • MembershipMapper:身份证,MembershipId,角色

我写这个剧本:

INSERT INTO [server1].[dbo].[Memberships] ([Role], [AccountName] .....) 
    SELECT 
     [Role], 
     [AccountName], 
     ...... 
    FROM 
     [server2].[dbo].[Memberships] 

但现在Role在另一个表中。如何插入它?有任何想法吗?

+0

最后你提到'角色'列来自另一个表。那么你的意思是你是从一个select语句中的两个表中插入数据到'Membership'和'MembershipMapper'表中?如果是这样,您将需要加入。如果不是,那么你将只需将数据分别插入到表中,因为Sql Server不支持在单个INSERT语句中插入多表。 –

回答

0

你可能需要一个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..... 
+0

恐怕你误解了我的问题,我不想从两个选择中插入到一个表中,我想从一个选择中插入到两个表中。 –

+0

@SamySammour:你**不能**那样做。一个插入只能进入**一个表**。 –

+0

好的,那么你的建议是什么?插入每一个单独? –

0

可能尝试是这样的

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 
+0

恐怕你误解我的问题,我不想从两个选择中插入一个表,我想从一个选择 –

0

呢?

INSERT INTO [server1的]。[DBO]。[成员]([作用],[帐户] .....)

OUTPUT [ID],[作用] INTO MembershipMapper(MembershipId,角色)

SELECT 
    [Role], 
    [AccountName], 
    ...... 
FROM 
    [server2].[dbo].[Memberships] 
+0

中插入两个表,因为我没有成员中的Role列,我只在MembershipMapper中拥有它 –

相关问题