집 >데이터 베이스 >MySQL 튜토리얼 >IF-ELSE 문 없이 SQL Server의 INSERT INTO SELECT에서 중복 행을 방지하는 방법은 무엇입니까?
SQL Server INSERT INTO SELECT 문에서 데이터 중복을 방지하는 방법
INSERT INTO SELECT 문을 사용할 때는 중복된 데이터 삽입을 방지하는 것이 중요합니다. 이 문서에서는 IF-ELSE와 같은 조건문을 사용하지 않고 SQL Server에서 이러한 문제를 방지하는 몇 가지 효과적인 방법을 설명합니다.
방법 1: NOT EXISTS 사용
<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 WHERE NOT EXISTS (SELECT id FROM TABLE_2 t2 WHERE t2.id = t1.id);</code>
이 쿼리는 TABLE_2에 일치하는 ID가 있는지 확인하여 중복 삽입을 방지합니다. 이미 존재하는 경우 이 줄을 건너뛰십시오.
방법 2: NOT IN 사용
<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 WHERE t1.id NOT IN (SELECT id FROM TABLE_2);</code>
NOT EXISTS와 마찬가지로 NOT IN 절도 TABLE_2에 이미 존재하는 ID를 제외합니다. TABLE_1의 ID가 TABLE_2에 있는지 확인하고 없는 경우에만 삽입합니다.
방법 3: LEFT JOIN/IS NULL 사용
<code class="language-sql">INSERT INTO TABLE_2 (id, name) SELECT t1.id, t1.name FROM TABLE_1 t1 LEFT JOIN TABLE_2 t2 ON t2.id = t1.id WHERE t2.id IS NULL;</code>
삽입해야 할 행을 더 명확하게 식별하려면 LEFT JOIN 및 IS NULL을 사용하세요. 이 쿼리는 TABLE_2에 일치하는 ID가 없는 TABLE_1의 모든 행을 선택하여 삽입합니다.
성능 비교
성능 측면에서 LEFT JOIN/IS NULL은 일반적으로 NOT EXISTS 및 NOT IN만큼 효율적이지 않습니다. 이는 LEFT JOIN이 더 많은 테이블과 행을 검색해야 하고 더 많은 리소스를 소비하기 때문입니다. 대규모 데이터 세트의 경우 NOT EXISTS 또는 NOT IN을 사용하는 것이 좋습니다.
위 내용은 IF-ELSE 문 없이 SQL Server의 INSERT INTO SELECT에서 중복 행을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!