2011-04-19 73 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 *,則會插入數據。