Mysql在插入数据时检查重复项

时间:2011-04-19 10:10:50

标签: php mysql

我有两个mysql表sentqueue。我将成员插入queue表。但是我不想再次插入相同的成员 - 如果它们在sent表中。他们已经收到了邀请。

如何检查插入queue的成员在sent中是否不存在?

3 个答案:

答案 0 :(得分:3)

INSERT
INTO    queue (member)
SELECT  $member
FROM    dual
WHERE   $member NOT IN
        (
        SELECT  member
        FROM    sent
        )

答案 1 :(得分:2)

如果这是您的应用原则,那么必须没有相同的队列条目,为什么不在队列表中添加唯一约束(在member_email,member_id或其他任何标识符)? 然后,您可以使用REPLACE INTO插入数据...这实际上意味着: 如果存在具有相同主键或唯一键的现有值,则在插入新键之前将删除该值。

REPLACE INTO queue (member_email, queue_detail)
VALUES ('already_existing_email', 'some_data');

这实际上会使用'some_data'更新already_existing_email的条目。

如果没有条目* already_existing_email *,将插入数据。

答案 2 :(得分:1)

尝试从发送的表中选择用户,如果没有返回任何行,则插入队列表。否则什么都不做。对于更深入的深度,您需要披露更多的架构以及什么表示用户是唯一的(电子邮件地址?)。