2013-07-24 4 views
2

내 데이터베이스에는 tickets_users이 티켓에 등록되어 있습니다.값이 이미 존재하지 않으면 INSERT

이미이 users_idtype = 2 WHERE tickets_id = something (예를 들어 사용자가 1444을위한) (예를 들어 항공권 번호 455)가없는 경우 tickets_users에 확인하는 INSERT을하고 싶습니다; 이미 다른, 아무것도하지 않고있는 경우

INSERT INTO tickets_users (tickets_id, users_id, type) VALUES (455, 1444, 2) 
WHERE tickets_id = 455 
+1

생각 하시겠습니까? (http://stackoverflow.com/questions/5528854/usage-of-mysqls-if-exists)이 (가) 당신이 찾고있는 것일 수도 있습니다. – vanamerongen

+0

[바꾸기] (http://dev.mysql.com/doc/refman/5.0/en/replace.html)? 한가지주의 할 점은 Oracle의 MERGE와는 다릅니다. 이것은 INSERT 또는 DELETE와 INSERT 중 하나이다. –

+0

tickets_users.id는 자동 증가로 표시되며 티켓 ID와 사용자 ID가 일치하면 아무 것도하지 않고 일치하지 않는 경우에만 삽입합니다. – Mokkun

답변

3
INSERT INTO tickets_users (tickets_id, users_id, type) 
select 455, 1444, 2 from dual 
WHERE not exists (select 1 from tickets_users where type = 2 and tickets_id = something) 

편집을 시도해보십시오
을 여러 행

INSERT INTO tickets_users (tickets_id, users_id, type) 
select 455, 1444, 2 from dual 
WHERE not exists (select 1 from tickets_users where type = 2 and tickets_id = 455) 
union all 
select 456, 1444, 2 from dual 
WHERE not exists (select 1 from tickets_users where type = 2 and tickets_id = 456) 
+0

고마워요 요청한 작동하지만 어떻게 여러 INSERT 요청을 사용합니까? 예를 들어 SELECT 455,1444,2 WHERE tickets_id = 455뿐만 아니라 SELECT 425,1226,2 WHERE tickets_id = 425 등 ... – Mokkun

+0

모두 사용 가능 합계 – Akhil

+0

쿼리를 어떻게 수정하는지 알려주십시오. 유니온과 함께 두 표를 보자. – Mokkun

4

당신은에 PRIMARY KEY 또는 UNIQUE 인덱스를 사용할 수를 추가하려면 해당 필드가있는 테이블은 중복 레코드를 중지합니다.

PRIMARY KEY 

INSERT 대신 INSERT IGNORE를 사용하십시오. 레코드가 기존 레코드를 복제하지 않으면, MySQL은 평소와 같이 레코드를 삽입합니다. 레코드가 중복되면, IGNORE 키워드는 MySQL에 오류를 발생시키지 않고 자동으로 무시하도록합니다. 예를 들어

INSERT IGNORE 

: ID는 기본 키라고 가정한다. 'tablename'테이블의 레코드가 이미 id = 1 인 레코드를 갖고 있다면 경고는 생성되지 않고 무시됩니다.

참고 : 개발 단계에서만 IGNORE 키워드를 사용하십시오. 레코드가 삽입되었는지 여부를 식별 할 수 없으므로 예기치 않은 결과가 발생할 수 있습니다.

+0

'INSERT IGNORE INTO tickets_users (tickets_id, users_id, type, use_notification) VALUES (1, 1444, 2, 1)'을 시도했지만 여전히 추가하고 있습니다. – Mokkun

+0

u 키를 열에 추가하십시오. –

+0

'INSERT IGNORE'는 권장 사용법이 아닙니다. 그것은 비록 그것이 잘못된 형식 등 잡힌 있어야합니다 모든 종류의 오류를 무시합니다. [이 참조하십시오] (http://stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key- 업데이트) – Akhil

관련 문제