동일한 스키마 테이블에서 중복 처리를 사용하여 행 복사
중복을 방지하면서 'srcTable' 테이블에서 'destTable'로 행을 전송하려고 합니다. . 그러나 WHERE 절에서 하위 쿼리를 사용하는 것은 효과적으로 작동하지 않습니다.
WHERE 절 문제 해결
오류는 적절한 구문이 없을 때 발생합니다. 중복 항목을 식별하기 위해 하위 쿼리의 절을 사용합니다. 다음과 같이 하위 쿼리에 필요한 조건을 추가합니다.
INSERT INTO destTable SELECT Field1, Field2, Field3, ... FROM srcTable WHERE NOT EXISTS(SELECT * FROM destTable WHERE (srcTable.Field1 = destTable.Field1 AND srcTable.Field2 = destTable.Field2 ... etc.) )
외부 조인을 사용한 대체 접근 방식
또는 더 간결한 솔루션을 위해 외부 조인을 사용하는 것을 고려해 보세요.
INSERT INTO destTable SELECT s.field1, s.field2, s.field3, ... FROM srcTable s LEFT JOIN destTable d ON (d.Key1 = s.Key1 AND d.Key2 = s.Key2 AND...) WHERE d.Key1 IS NULL
소스에서 중복 처리 테이블
특히 소스 테이블의 중복 행에 문제가 있는 경우 삽입 문에 고유 절을 사용하는 것이 좋습니다.
INSERT INTO destTable SELECT Distinct field1, field2, field3, ... FROM srcTable
추가 권장 사항
위 내용은 중복을 방지하면서 한 테이블에서 다른 테이블로 행을 효율적으로 복사하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!