我有两个mysql表sent
和queue
。我将成员插入queue
表。但是我不想再次插入相同的成员 - 如果它们在sent
表中。他们已经收到了邀请。
如何检查插入queue
的成员在sent
中是否不存在?
答案 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)
尝试从发送的表中选择用户,如果没有返回任何行,则插入队列表。否则什么都不做。对于更深入的深度,您需要披露更多的架构以及什么表示用户是唯一的(电子邮件地址?)。