MySQL에서 중복 키의 레코드를 제거하는 방법이 있습니까?중복 키에 MySQL 삽입; 지우다?
데이터베이스에 특정 기본 키가있는 레코드가 있고 동일한 키를 사용하여 다른 레코드를 추가하려고합니다. ON DUPLICATE KEY UPDATE
은 레코드를 간단히 업데이트하지만 레코드가 이미 있으면 제거 할 수 있습니까? 그것은 버튼을 클릭 할 때 간단한 in/out 기능입니다.
MySQL에서 중복 키의 레코드를 제거하는 방법이 있습니까?중복 키에 MySQL 삽입; 지우다?
데이터베이스에 특정 기본 키가있는 레코드가 있고 동일한 키를 사용하여 다른 레코드를 추가하려고합니다. ON DUPLICATE KEY UPDATE
은 레코드를 간단히 업데이트하지만 레코드가 이미 있으면 제거 할 수 있습니까? 그것은 버튼을 클릭 할 때 간단한 in/out 기능입니다.
가장 가까운 가능한 해결책은 REPLACE
입니다. 다음은 documentation for REPLACE입니다.
비슷한 질문 MySQL Forums에 질문을 받았다와 recommended(and only) answer는 REPLACE
를 사용하는 것이 었습니다.
네,하지만 그건 내가 찾고있는 것이 아닙니다. 데이터베이스의 항목을 바꾸고 싶지 않습니다. 존재한다면, 함께 제거하고 싶습니다. –
그 경우 유일한 대안은 위의 유일한 해결책 일 것입니다.이 경우 별도의 명령문을 실행하는 것입니다. 먼저 레코드를 찾았는지 확인한 다음 결과를 추가하거나 제거하십시오. –
또는'BOOLEAN' 또는'ENUM' 열을 만들고 원하는지 여부에 따라 0 또는 1로 설정하십시오. – hjpotter92
사용 REPLACE INTO :
replace into some_table
select somecolumn from othertable
새로운 데이터를 삽입하거나 것 중 하나 THR 같은 데이터는 데이터를 삭제하고 문제에 대한 MySQL의에서 솔루션이 물론 새로운
vs ON DUPLICATE UPDATE에 대한 대체 성능이 다릅니다. REPLACE INTO가 레코드를 업데이트하지 않습니다. 레코드를 삭제하고 다시 추가합니다. 데이터와 인덱스가 많은 경우에는 잠시 시간이 걸릴 수 있습니다. 중복 업데이트를 사용하는 것이 더 좋지만 ON과 비슷한 항목을 삭제하려고합니다. DUPLICATE DELETE –
예를 삽입합니다 존재하는 경우 .
삭제하거나 이미 중복 레코드가 테이블의 키 컬럼에 존재하는 경우 새로운 삽입 기록을 생략 할 경우,이 같은 무시 사용할 수 있습니다
다음insert ignore into mytbl(id,name) values(6,'ron'),(7,'son');
id
열은 기본 키 테이블 mytbl
. 이렇게하면 새 중복 레코드를 삭제하거나 건너 뜀으로써 여러 값을 테이블에 삽입합니다.
희망 사항은 귀하의 요구 사항을 충족시킬 것입니다.
ignore를 삽입해도 아무 것도 삭제되지 않습니다 –
는 그것은 해결 방법이지만, 그것을 작동 :
는 작은-INT 만들기, 새 열을 만들고 do_delete
을 호출, 또는 무엇 이건. 그런 다음 수행하십시오 On Duplicate Key Update do_delete = 1;
MySQL 버전/연결에 따라 동일한 명령문에서 여러 개의 쿼리를 실행할 수 있습니다. 그러나 그렇지 않은 경우에는 바로 뒤에 별도의 쿼리를 실행하십시오. 어느 쪽이든 다음 쿼리는 단지 Delete From [table] Where do_delete = 1;
입니다. 이렇게하면 새 항목 인 경우 아무 것도 삭제하지 않습니다. 새 항목이 아니면 삭제할 항목을 표시 한 다음 삭제할 수 있습니다.
이 옵션이 마음에 들며 업데이트 성명을 변경할 필요가 없습니다. – ChiMo
** 트리거 ** – rekenerd
사용 감사합니다. 유일한 옵션이라고 생각합니다. –