[SQL] 삽입 속으로 ... 병합 ... 선택 (SQL 서버)
SQL삽입 속으로 ... 병합 ... 선택 (SQL 서버)
나는 전문 지식을 사용할 수 있습니다. 나는 다음과 같은 코드가 있습니다 :
INSERT INTO Table3 (Column2, Column3, Column4, Column5)
SELECT null, 110, Table1.ID, Table2.Column2
FROM Table1
JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
JOIN Table2 on Table1Table2Link.Column2=Table2.ID
지금은 Inserted.ID (표 3의 삽입에 생성되는 아이덴티티) 및 Table2.ID을 임시 테이블이나 테이블 변수 중 하나에 삽입해야합니다. 일반적으로 나는 OUTPUT 절을 사용하지만, 출력은 다른 테이블에서 데이터를 얻을 수 없습니다. 지금은 MERGE와 함께 할 수 있지만, 나는 확실히 그것에 대해 이동하는 방법을 모르겠습니다 생각합니다. 내가 좋아하는 뭔가가 필요 :
INSERT INTO Table3 (Column2, Column3, Column4, Column5)
OUTPUT Inserted.ID, Table2.ID into @MyTableVar
SELECT null, 110, Table1.ID, Table2.Column2
FROM Table1
JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1
JOIN Table2 on Table1Table2Link.Column2=Table2.ID
이 중복 질문입니다하지만 난 아무것도 찾을 수 있다면 죄송합니다.
해결법
-
==============================
1.트릭은 대신 INSERT의 MERGE 문을 사용하여 테이블을 채우는 것입니다 ... SELECT. allowes 당신은 출력 절에 모두 삽입 및 소스 데이터의 값을 사용합니다 :
트릭은 대신 INSERT의 MERGE 문을 사용하여 테이블을 채우는 것입니다 ... SELECT. allowes 당신은 출력 절에 모두 삽입 및 소스 데이터의 값을 사용합니다 :
MERGE INTO Table3 USING ( SELECT null as col2, 110 as col3, Table1.ID as col4, Table2.Column2 as col5, Table2.Id as col6 FROM Table1 JOIN Table1Table2Link on Table1.ID=Table1Table2Link.Column1 JOIN Table2 on Table1Table2Link.Column2=Table2.ID ) AS s ON 1 = 0 -- Always not matched WHEN NOT MATCHED THEN INSERT (Column2, Column3, Column4, Column5) VALUES (s.col2, s.col3, s.col4, s.col5) OUTPUT Inserted.ID, s.col6 INTO @MyTableVar (insertedId, Table2Id);
from https://stackoverflow.com/questions/41184310/insert-into-merge-select-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL의 GROUP BY 절에 열을 쉼표로 구분 (0) | 2020.04.22 |
---|---|
[SQL] 자기 무엇을 위해 가입한다? (영어로) (0) | 2020.04.22 |
[SQL] 내가 필요로 할 종류의 무엇에 합류? (0) | 2020.04.22 |
[SQL] SQL Server의 동적 피벗 테이블 (0) | 2020.04.22 |
[SQL] 어떤 장점이있다 : 자연 USING 절 대 가입 대 내부 가입? (0) | 2020.04.22 |