2012-03-28 3 views
1

임시 가져 오기 테이블의 새 연락처 배열을 주 고객 데이터베이스에 삽입하려고합니다. 그것이 삽입되기 전에 우리는 먼저 연락이 블랙리스트에 있는지 확인하기를 원합니다. 존재하지 않으면 기본 테이블에 삽입하고 싶지 않습니다.별도의 테이블에 mysql을 삽입하지 않은 경우

내가 먼저 임시 테이블에서 연락처를 끌어 :

SELECT `email` FROM `import_contacts` 

그런 다음 나는 그것이 "하찮은"또는 블랙리스트에 대해 확인 된 후에 만 ​​기본 테이블에 그 연락처를 삽입 할. 나는 현재 그것을 가지고 방법 : 내가 내파를 블랙리스트에 포함 모든 연락처를 가지고있는 것처럼 배열을 내파 나에게 발생했을 때 나는 혼란 가지고

INSERT INTO `contacts` (`email`) 
VALUES ('".implode("','','',''),('",$email)."','','','') 
WHERE... 

. 따라서 비록 내가 WHERE 문장을 작동 시키더라도 그것은 낭비적이고 모호한 데이터로 가득 찰 것입니다.

하나의 SQL 문을 사용하여 블랙리스트 테이블과 대조하여 연락처를 기본 테이블에 삽입하는 방법이 있습니까?

도움을 주시면 대단히 감사하겠습니다.

답변

5
INSERT INTO `contacts` (`email`) 
SELECT email FROM `import_contacts` 
WHERE `import_contacts.email` NOT_IN(`SELECT email FROM my_blacklist`); 
+0

많이 완벽한 감사했다! – john

관련 문제