2012-03-28 12 views
1

Ich versuche, ein Array von neuen Kontakten aus einer temporären Importtabelle in unsere primäre Kundendatenbank einzufügen. Bevor es eingefügt wird, wollen wir zunächst prüfen, ob der Kontakt auf unserer Blacklist existiert. Wenn es existiert, wollen wir es nicht in die Primärtabelle einfügen.Mysql einfügen, wenn nicht existiert von separaten Tabelle

ich zuerst die Kontakte aus temporärer Tabelle ziehen:

SELECT `email` FROM `import_contacts` 

Dann möchte ich diese Kontakte in die primäre Tabelle einfügen erst, nachdem es gegen die schwarze Liste „geschrubbt“ oder überprüft wurde. So wie ich es derzeit haben:

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

Ich habe verwirrt, wenn es fiel mir ein, dass das Array implodiert wie ich implodiert alle Kontakte haben, auch die auf der schwarzen Liste. Selbst wenn ich die Anweisung WHERE zum Funktionieren bekommen würde, wäre sie verschwenderisch und voller mehrdeutiger Daten.

Gibt es eine Möglichkeit, die Kontakte in die Primärtabelle einzufügen, nachdem sie anhand einer SQL-Anweisung mit der Blacklist-Tabelle verglichen wurde?

Jede Hilfe würde sehr geschätzt werden !!

Antwort

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

arbeitete viel perfekt Dank! – john

0

Probieren Sie die Verwendung von Select aus MySQL.

Es wird eine Einfügung basierend auf einer Auswahl ausgeführt.

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

Beispiel von 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; 
Verwandte Themen