mysql 데이터베이스에서 중복 데이터를 제거하는 방법: 1. 삭제해야 하는 레코드를 쿼리하면 하나의 레코드가 유지됩니다. 2. 중복 레코드를 삭제하면 하나의 레코드만 유지됩니다. test1 a에서, (...) test1 c에서 입찰로, 여기서..].
mysql 데이터베이스에서 중복 데이터를 제거하는 방법:
1 삭제해야 할 레코드를 쿼리하면 레코드가 유지됩니다.
select a.id,a.subject,a.RECEIVER from test1 a left join (select c.subject,c.RECEIVER ,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b on a.id< b.bid where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid
2. 중복된 기록을 삭제하고 하나의 기록만 보관하세요. subject,RECEIVER는 색인을 생성해야 합니다. 그렇지 않으면 속도가 매우 느려집니다.
delete a from test1 a, (select c.subject,c.RECEIVER ,max(c.id) as bid from test1 c where status=0 GROUP BY RECEIVER,SUBJECT having count(1) >1) b where a.subject=b.subject and a.RECEIVER = b.RECEIVER and a.id < b.bid;
3. 테이블에서 중복된 기록을 찾습니다.
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
4. 테이블에서 중복된 기록을 삭제합니다. ).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)
5. 테이블에서 중복된 레코드(여러 필드)를 삭제하고 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)
게으르게 사용하시면 될 것 같습니다. 이 일을 완료하기 위한 명령이 명확하지 않은 것 같습니다. 아니면 먼저 임시 테이블을 생성하고 복사한 다음 임시 테이블의 데이터를 비교하고 해당 데이터를 삭제하는 것이 좋습니다. 메인 테이블
alter table tableName add autoID int auto_increment not null; create table tmp select min(autoID) as autoID from tableName group by Name,Address; create table tmp2 select tableName.* from tableName,tmp where tableName.autoID = tmp.autoID; drop table tableName; rename table tmp2 to tableName;
더 많은 관련 무료 학습 권장사항:mysql tutorial (동영상)
위 내용은 mysql 데이터베이스에서 중복된 데이터를 제거하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!