하나의 테이블에서 다른 테이블로 데이터를 삽입하려고하는데 중복 행 삽입을 방지하고 싶습니다. 저는 현재 다음과 같은 쿼리를 가지고 :SQL Server 2008을 사용하여 중복 행 삽입 방지
INSERT INTO Table1
(
Table1Col1,
Table1Col2,
Table1Col3,
Table1Col4,
Table1Col5
)
SELECT
Table2Col1,
Table2Col2 = constant1,
Table2Col3 = constant2,
Table2Col4 = constant3,
Table2Col5 = constant4
FROM Table2
WHERE
Condition1 = constant5
AND
Condition2 = constant6
AND
Condition3 = constant7
AND
Condition4 LIKE '%constant8%'
내가 모르는 것은 내가 표에 표 2에서 삽입하려고 행이 이미있을 수 있습니다 나는 이런 일이 발생 가능한 중복을 방지하고 삽입을 건너 뛰고 싶다고 다음 고유 행을 삽입하는 것으로 이동하십시오.
WHERE NOT EXISTS 절을 사용하고 INTERSECT 키워드를 사용할 수 있지만 Table2에서 선택한 데이터 중 일부만 사용하려는 경우 특정 쿼리에 적용하는 방법을 완전히 이해하지 못했습니다. 다음 몇 가지 상수 값을 Table1에 삽입합니다.
편집 :
내가 TableCol5까지 실제로 결과에 존재하지 않는 TableCol2 열을 설정하고 난 그냥 반환 Table2Col1 함께 이러한 열을 채우는 오전 추가해야합니다.
유일해야하는 열에 'UNIQUE' 제약 조건을 정의하면 "중복"삽입이 작동하지 않습니다 (대신 오류가 발생합니다) –
중복 행이 하나는 table1의 행이나 열의 서브 세트와 정확히 동일 하나 고유성을 정의합니까? –
@ NikolaMarkovinović 고유성을 정의하는 Table1Col1, Table1Col2 및 TableCol3의 하위 집합입니다. – Aesir