제목이 중복된 모든 기록 찾기:
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC
1. 중복 기록 찾기
1. 중복 기록 모두 찾기
Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
2. 표시됨) )
Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title)
참고: ID가 가장 큰 레코드가 여기에 표시됩니다
2. 중복 레코드 삭제
1. 모든 중복 기록을 삭제하세요(주의해서 사용하세요)
Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
2. 하나의 기록을 유지하세요(이것은 대부분의 사람들에게 필요합니다^_^)
Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)
참고: 여기서 가장 큰 ID
3. 예시
1. 중복된 기록을 테이블에서 찾아보세요. (peopleId)
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2. 테이블에서 중복된 레코드를 삭제합니다. 중복 레코드는 단일 필드(peopleId)를 기준으로 판단하여 가장 작은 rowid를 가진 레코드만 남깁니다.
delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3. 테이블에서 중복된 중복 레코드 찾기(다중 필드)
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4. 테이블에서 중복된 중복 레코드(다중 필드)를 삭제하고 rowid가 가장 작은 레코드만 남겨둡니다
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)
5. 테이블에서 중복 레코드 조회 가장 작은 rowid를 가진 레코드를 제외한 중복 레코드(다중 필드)
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)
4. 보충
중복 레코드가 2개 이상 있습니다. 하나는 완전히 중복된 레코드, 즉 모든 필드입니다. 두 번째는 일부 키 필드가 반복되는 레코드입니다. 예를 들어 이름 필드는 반복되지만 다른 필드는 반복되지 않거나 모두 무시될 수 있습니다.
1. 첫 번째 유형의 중복은 비교적 해결하기 쉽습니다.
select distinct * from tableName
를 사용하면 중복 레코드 없이 결과 집합을 얻을 수 있습니다.
테이블에서 중복 레코드를 삭제해야 하는 경우(중복 레코드 1개 유지) 다음과 같이 삭제할 수 있습니다.
select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp
이러한 중복의 원인은 고유 인덱스 열을 추가하여 해결할 수 있습니다. .
2. 이러한 유형의 중복 문제는 일반적으로 중복 레코드 중 첫 번째 레코드를 유지해야 합니다. 작업 방법은 다음과 같습니다.
이름과 주소가 중복된 필드가 있고 고유한 결과 집합을 얻어야 한다고 가정합니다. 이 두 필드 중
select identity(int,1,1) as autoID, * into #Tmp from tableName select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp where autoID in(select autoID from #tmp2)
위는 중복 레코드를 쿼리하고 중복 레코드를 삭제하는 완전한 방법인 MySQL의 내용입니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)를 참고하세요. )!