2011-04-19 91 views
0

我有两个mysql表sentqueue。我将成员插入queue表中。但是我不想再次插入同一个成员 - 如果他们在sent表中。他们已经收到邀请。Mysql在插入数据时检查重复项

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

回答

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'); 

这实际上会更新has_existing_email与'some_data'的输入。

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