2012-03-28 13 views
1

一時的なインポートテーブルから新規の連絡先の配列を当社の主要顧客データベースに挿入しようとしています。挿入する前に、その連絡先がブラックリストに登録されているかどうかを最初に確認する必要があります。それが存在する場合、それをプライマリ・テーブルに挿入したくありません。別のテーブルからmysqlが挿入されていない場合は、

私は最初の一時テーブルから連絡先を引っ張っ:

SELECT `email` FROM `import_contacts` 

は、その後、私はそれが「スクラブ」またはブラックリストと照合された後にのみ、主テーブルにそれらの連絡先を挿入します。私は現在、それを持っている方法:私が持っているように、配列を内破すると、ブラックリスト上のものを含むすべての連絡先を、崩壊することを私に発生したときに

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

は、私は混乱しました。だから、もし私がWHEREステートメントを働かせていたとしても、それは無駄であり、あいまいなデータでいっぱいです。

1つのSQL文を使用してブラックリストテーブルに対してコンタクトをチェックした後に、プライマリテーブルにコンタクトを挿入する方法はありますか?

ご協力いただければ幸いです!

答えて

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

は完璧なおかげで多くのことを働きました! – john

0

MySQLからのinsert selectを使用してみてください。

選択に基づいて挿入を実行します。

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

dev.mysql.comから例:

INSERT INTO tbl_temp2 (fld_id) 
    SELECT tbl_temp1.fld_order_id 
    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100; 
関連する問題