2016-11-08 1 views
0

마다나는이 MySQL의 쿼리를 사용하고

insert into table (vin,name,city,dob) values ('der12','john','city name','2016-17-10') ON DUPLICATE KEY UPDATE name='john' 

'테이블 구조는 내가 BIGINT 및 autoincreament으로 ID를 가지고 그래서 여기

id - bigint -primary key 
vin - varchar 
name - varchar 
city - varchar 
dob - varchar 

이며, 차량 등록도 할 수 t은 중복, 내가 확인하는 것입니다 만약 이미 테이블에있는 경우, 그 레코드가 업데이 트하거나 모든 것이 동일하면 아무것도하지 않으면, vin이 다를 경우 그냥 레코드를 삽입하십시오.

내가 너무 독특한으로 만드는 자동차 등록을 시도했지만

ALTER TABLE table ADD UNIQUE (vin) 

하지만, 문제로 내가 쿼리를 실행할 때 대신 업데이트하거나 무시하고 일부 duplicacy 오류를 보여줍니다 추가 한 후입니다.

친절한 도움이 필요합니다. 내가 이해 한 바로는 사전

+0

제공된 정보를 바탕으로 복제물에 대한 삽입물은 문제가 없습니다. 쇼 만들기 테이블을 만들 때 다른 고유 키가 있습니까? 그리고 DB에서 다른 곳에서 중복을 일으킬 수 있는지 확인하기 위해 트리거를 확인 했습니까? –

+0

아니요 다른 고유 키가 없습니다. 그냥 만약 vin 존재하지 않으면 vin이 없으면 insert가 필요합니다. – phpdev

+0

나는 당신의 질문이 나를 위해 잘 작동한다고 말했다. 정확히 무엇이 중복 오류이며 당신은 트리거를 점검 했는가? –

답변

0

에서

감사합니다, 당신은 "자동차 등록은"그대로 다른 이전의 기록을 유지 다른 경우 레코드를 추가 할 수 있습니다.

"vin"이 "john"이거나 현재 삽입중인 값이있는 레코드 수를 얻을 수 있습니다. count가 "0"이면 레코드를 삽입하고 아무 것도하지 않습니다.

+0

예, 가능한 경우, 테이블에 존재하는 경우 vin이 있는지 확인하고, 다른 레코드를 삽입하는 업데이트가 존재하지만 1800 만개 이상의 레코드가있는 단일 쿼리로 가능합니다. – phpdev

+0

이것을 확인하십시오 : INSERT newtable (user, age, os) SELECT table1.user, table1.age, table2.os FROM table1, table2 WHERE table1.user = table2.user; –

+0

해당 검색어를 시도해보십시오. 도움이 될 것입니다. –

관련 문제