mysql如果不存在则从单独的表中插入

时间:2012-03-28 17:31:29

标签: php mysql

我正在尝试将临时导入表中的新联系人数组插入到我们的主要客户数据库中。在插入之前,我们首先要检查我们的黑名单中是否存在联系人。如果确实存在,我们不希望将其插入主表。

我首先从临时表中提取联系人:

SELECT `email` FROM `import_contacts`

然后我想将这些联系人插入主表后,仅在它被“擦洗”或在黑名单中检查之后。我目前的方式:

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

当我发现爆炸阵列时,我感到困惑,就像我已经破坏了所有联系人,包括那些黑名单上的联系人。因此,即使我要使WHERE语句起作用,也会浪费并且充满模糊数据。

有没有办法在使用一个sql语句对黑名单表进行检查后将联系人插入主表?

非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

尝试使用MySQL中的插入选择。

它将基于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;