2011-04-19 5 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'); 

이렇게하면 'some_data'로 already_existing_email의 항목을 업데이트합니다.

항목 * already_existing_email *이 없으면 데이터가 삽입됩니다.

관련 문제