2016-11-07 1 views
0

select에서 데이터를 삽입하는 데이터베이스 스크립트를 작성하려고합니다. 하지만 데이터베이스에 편집이 있으므로 동일한 데이터를 외래 키가 아닌 두 테이블에 삽입해야합니다.SQL Server에서 하나의 선택에서 두 테이블에 데이터 삽입 2016

테이블 :

  • Membership : 아이디, 역할, 계정 이름, ...
  • MembershipMapper :

    INSERT INTO [server1].[dbo].[Memberships] ([Role], [AccountName] .....) 
        SELECT 
         [Role], 
         [AccountName], 
         ...... 
        FROM 
         [server2].[dbo].[Memberships] 
    
    : 아이디, MembershipId, 역할

나는이 스크립트를 썼다

하지만 이제 Role은 다른 테이블에 있습니다. 그것을 삽입하는 방법? 어떤 아이디어?

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

결국 'Role' 열은 다른 테이블에서 나온 것입니다. 그렇다면 하나의 select 문에있는 두 테이블의 데이터를 'Membership' 및'MembershipMapper' 테이블에 삽입한다는 의미입니까? 그렇다면 조인이 필요합니다. 그렇지 않으면 Sql Server가 단일 INSERT 문에서 다중 테이블 삽입을 지원하지 않기 때문에 데이터를 테이블에 개별적으로 삽입해야합니다. –

답변

0

당신은 아마이 JOIN해야합니다?

INSERT INTO [SERVER1]. [DBO]. [멤버쉽 ([역할], [계정 이름] .....)

OUTPUT [ID], [역할] MembershipMapper (MembershipId, 역할) INTO

SELECT 
    [Role], 
    [AccountName], 
    ...... 
FROM 
    [server2].[dbo].[Memberships] 
+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

같은 것을보십시오 :

+0

회원에 역할 열이 없기 때문에 작동하지 않았다, 나는 MembershipMapper에만 가지고있다. –

관련 문제