> 데이터 베이스 > MySQL 튜토리얼 > mysql에서 중복 검사를 구현하고 하나만 남기는 방법

mysql에서 중복 검사를 구현하고 하나만 남기는 방법

藏色散人
풀어 주다: 2020-11-01 14:33:16
원래의
2642명이 탐색했습니다.

중복 검사를 구현하고 하나만 유지하는 Mysql 방법: 먼저 "select * from"을 통해 테이블에서 중복된 중복 레코드를 찾은 다음 "delete from"을 통해 중복 데이터를 삭제하고 하나의 데이터만 유지합니다.

mysql에서 중복 검사를 구현하고 하나만 남기는 방법

권장: "mysql 비디오 튜토리얼"

mysql은 중복 데이터를 삭제하고 하나의 기록만 유지합니다

는 중복 데이터를 삭제하고 이름에서 가장 작은 ID를 가진 기록을 유지합니다

delete from order_info where id not in (select id from (select min(id) as id from order_info group by order_number) as b);
로그인 후 복사

delete from table where id not in (select min(id) from table group by name having count(name)>1) and  id in (select id group by name having count(name)>1)
로그인 후 복사

(참고 : HAVING 절 쌍 GROUP BY 절은 WHERE 검색 조건이 그룹화 작업 전에 적용되는 방식과 유사하게 설정되며, HAVING 검색 조건은 그룹화 작업 후에 적용됩니다. 그러나 HAVING은 집계를 포함할 수 있습니다. )

확장:

SQL: 중복된 데이터를 제거하고 하나만 유지합니다. 레코드에 동일한 레코드가 몇 개 있습니다. 중복 레코드를 삭제하려면 어떻게 해야 하나요? 1. 테이블에서 중복된 레코드를 찾으세요. 중복 레코드는 단일 필드(peopleId)를 기준으로 판단됩니다. , 테이블에서 중복된 레코드를 삭제합니다. 중복된 레코드는 단일 필드(peopleId)를 기준으로 판단되며, 가장 작은 rowid를 가진 레코드만 남깁니다.

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
로그인 후 복사

3 테이블에서 중복된 중복 레코드(여러 필드)를 찾습니다.

delete from people where   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>1)
로그인 후 복사

4 . 테이블에서 중복된 중복 레코드(다중 필드)를 삭제하고 rowid가 가장 작은 레코드만 남겨둡니다

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
로그인 후 복사

5. 테이블에서 rowid가 가장 작은 레코드(다중 필드)를 제외하고 중복 레코드(다중 필드)를 찾습니다. 6. 필드 왼쪽의 첫 번째 숫자 제거:

delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
로그인 후 복사

7. 필드 오른쪽의 첫 번째 숫자 제거:

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
로그인 후 복사

8. 테이블에서 해당 레코드를 제외한 중복된 레코드(여러 필드)를 가짜로 삭제합니다. 가장 작은 rowid로

update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'
로그인 후 복사

위 내용은 mysql에서 중복 검사를 구현하고 하나만 남기는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿