2009-06-19 6 views
1

테이블 A에 15000 개의 항목이 있습니다. 나는 테이블 A와 공통 필드가있는 7900 개의 항목이있는 두 번째 테이블 B를 가지고 있습니다.MySQL 다른 테이블에있는 테이블의 레코드를 제거하는 방법

테이블 B에 나타나는 항목을 제외한 테이블 A의 모든 항목을 세 번째 임시 tableC로 추출해야합니다. , 나는 그것을 할 방법을 발견 havent. 가장 가까운 것은 다음과 같습니다.

INSERT INTO tableC 
SELECT * 
FROM tableA 
    INNER JOIN tableB 
     ON tableA.field IS NOT tableB.field 

이 SQL은 tableA에있는 모든 항목과 tableB에있는 항목까지 선택합니다.

내가 잘못 가고있는 아이디어가 있습니까?

답변

6

이 방법을 사용하면 어떻게됩니까?

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB) 

아니면 대체를 시도 할 수 있습니다 구문을

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field) 
+0

뛰어난 존재! 이것은 매력처럼 작동했습니다. 단순히 하위 선택을 사용하지 않았 더라면. –

+0

도움이 되니 기쁩니다! –