mysql вставить, если не существует из отдельной таблицы

Я пытаюсь вставить массив новых контактов из временной таблицы импорта в нашу основную базу данных клиентов. Прежде чем он будет вставлен, мы хотим сначала проверить, существует ли контакт в нашем черном списке. Если он существует, мы не хотим вставлять его в основную таблицу.

Сначала я вытаскиваю контакты из временной таблицы:

SELECT `email` FROM `import_contacts`

Затем я хочу вставить эти контакты в основную таблицу ТОЛЬКО ПОСЛЕ того, как они были «очищены» или проверены по черному списку. Как у меня сейчас:

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

Я запутался, когда мне пришло в голову, что взрыв массива, как у меня, взрывает ВСЕ контакты, включая те, которые находятся в черном списке. Таким образом, даже если бы я заставил оператор WHERE работать, это было бы расточительно и содержало бы неоднозначные данные.

Есть ли способ вставить контакты в основную таблицу после того, как они были проверены по таблице черного списка с помощью одного оператора sql?

Любая помощь будет принята с благодарностью!


person john    schedule 28.03.2012    source источник


Ответы (1)


Попробуйте использовать вставку select из MySQL.

Он будет запускать вставку на основе выбора.

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;
person Community    schedule 28.03.2012