MySQL 중복 제거 방법

怪我咯
풀어 주다: 2017-07-06 11:25:48
원래의
2748명이 탐색했습니다.

본 글에서는 MySQL중복제거 방법 관련 내용을 주로 소개하고 있으니 필요하신 분들은

MySQL 중복제거 방법

[초급] 중복 행이 거의 없음

별도 사용 확인 후 삭제하세요. 수동으로 한 줄씩.

[중급] 단일 필드의 반복을 기반으로 한 중복 제거

예: id 필드의 중복 제거

사용법: id의 반복 필드 값을 가져오고, 동일한 id 필드가 있는 행을 사용합니다. 찾아서 다른 데이터 필드를 비교한 후 가장 작은(또는 가장 큰) 필드가 있는 행을 제외한 모든 중복 행을 삭제합니다. 일반적으로 기본 키의 값은 고유한 값이어야 하고 동일해서는 안 되므로 비교를 위해 기본 키를 사용합니다.

id  name

1    a

1    b

2    c

2    a

3    c
로그인 후 복사

결과:

id  name

1    a 

2    a
로그인 후 복사

작업:

delete from a_tmp 

where id in (select * from (select b.id from a_tmp b group by b.id having count(b.id) >1) bb) 

and name not in (select * from (select min(a.name) from a_tmp a GROUP BY a.id having count(a.id) >1) aa);
로그인 후 복사


참고:

위의 굵은 글씨와 녹색 단어는 별칭이어야 하며 select * from (...) 형식을 사용해야 합니다. 그렇지 않으면 오류가 발생합니다. 보고서:

[Err] 1093 - FROM 절

[고급] 여러 필드에서 반복

의 경우 up

date

에 대한 대상 테이블 'a_tmp'를 지정할 수 없습니다. 예: ID의 경우 동일한 중복 제거 즉, ID와 이름이 동일한 행은 중복 행으로 계산되고, ID는 동일하지만 이름이 다른 행은 중복되지 않은 행으로 계산됩니다.

사용 방법: 단일 필드와 유사하게 기본 키는 일반적으로 기본 키의 값은 고유한 값이어야 하기 때문에 비교에 사용됩니다.

id  name  rowid

1  a      1

1  a      2

1  b      3

2  b      4

2  b      5

3  c      6

3  d     7
로그인 후 복사

Result:

id  name  rowid

1  a      1 

1  b      3

2  b      4

3  c      6

3  d     7
로그인 후 복사

Operation:

첫 번째 유형:

delete from a_tmp 

where (id,name) in (select * from (select b.id,b.name from a_tmp b group by b.id,b.name having count(b.id) >1) bb) 

and rowid not in (select * from (select min(a.rowid) from a_tmp a group by a.id,a.name having count(a.id) >1) aa);
로그인 후 복사

두 번째 유형:

id와 name 필드의 값을 연결하여 임시 테이블 b_tmp에 삽입합니다. [중급] 단일 필드 판단 및 삭제 방법을 사용할 수 있습니다.

#a_tmp 테이블의 두 필드와 고유 값 필드 사이의 연결 값을 b_tmp 테이블에 삽입

insert into b_tmp 

 select concat(id,name),rowid from a_tmp;

#查出需要留下来的行

select id_name,max(rowid)

 from b_tmp 

 group by id_name

 having count(id_name)>1;

#使用【中级】的方法,或存储过程完成去重的工作
로그인 후 복사

【Ultimate】각 행에는 동일한 데이터의 복사본이 두 개 있습니다

예:

사용법: 전체 행에 대해 데이터는 모두 동일하며 하나의 행을 남겨두고 동일한 행을 모두 삭제하는 데 사용할 수 있는 조건부 제한이 없으므로 SQL 문을 사용하여 삭제할 수 없습니다. 다른 필드는 없습니다. 즉, 필드를 추가하고 자동 증가로 설정한 다음 기본 키로 설정하면 자동으로 상위 값이 추가됩니다.

id  name

1   a

1   a

1   b

1   b

2   c

2   c

3   c

3   c
로그인 후 복사

결과:

id  name   rowid

1   a       1

1   b       3

2   c       5

3   c       7
로그인 후 복사

작업:

자체 증가 필드를 추가하고 임시로 기본 키로 설정합니다.

위의 [중급] 및 [고급] 방법을 사용하세요.

위 내용은 MySQL 중복 제거 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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