중복 확인 및 데이타 삭제 > 기술자료 | 해피정닷컴

중복 확인 및 데이타 삭제 > 기술자료

본문 바로가기

사이트 내 전체검색

중복 확인 및 데이타 삭제 > 기술자료

MySQL 중복 확인 및 데이타 삭제

페이지 정보


본문

중복데이터가 몇개이상인 것을 검색하고 싶을 때
중복데이터를 추출 할 때 group by having절을 사용해서 검색을 합니다.


1. 중복 확인
select *, count(*) from `테이블` where 조건컬럼='값' group by 컬럼1, 컬럼2, ... 컬럼n having count(*) > 1;
select *, count(*) as cnt from `테이블` where 조건컬럼='값' group by 컬럼1, 컬럼2, ... 컬럼n having count(*) > 1;
select A.* from `테이블` A, (select 컬럼1 from `테이블` where 조건컬럼='값' group by 컬럼1, 컬럼2, ... 컬럼n having count(*) > 1) B where A.컬럼1 = B.컬럼1
select * from `테이블` where 컬럼1 IN ( select 컬럼1 from `테이블` where 조건컬럼='값' group by 컬럼1, 컬럼2, ... 컬럼n having count(*) > 1 );


2. 중복데이터 삭제
id컬럼은 AUTO_INCREMENT 로, 기본 키 값을 증가의 자동 시퀀스를 생성하는 키입니다

2-1. 해당 테이블에 유일값(id) 컬럼이 있는 경우
중복일 경우 id컬럼 값을 이용하여 중복 레코드 중 가장 낮은 값(오래된)을 포함한 레코드를 제거합니다

delete from `테이블` where id컬럼 IN (select * from (select MIN(id컬럼) from `테이블` where 조건컬럼='값' group by 컬럼1, 컬럼2, ... 컬럼n having count(*) > 1) as tmp );


2-2. 해당 테이블에 유일값(id) 컬럼이 없는 경우
# rownum값 초기화
set @rownum:=0;

# rownum값을 이용해 id 컬럼을 만들어서 새로운 테이블 생성
create table `테이블_copy` as select @rownum:=@rownum+1, * from `테이블';

# 위와 동일 
delete from `테이블` where id컬럼 IN (select * from (select MIN(id컬럼) from `테이블` group by 컬럼1, 컬럼2, ... 컬럼n having count(*) > 1) as tmp );

rownum 을 이용해서 id컬럼이 추가된 새로운 테이블을 만들고, 2-1과 동일한 방법으로 중복을 없앨 수 있습니다
delete from `테이블` where 컬럼1 IN ( select A.컬럼1 from ( select 컬럼1 from `테이블` group by 컬럼1, 컬럼2, ... 컬럼n having count(*) > n ) A );


참고자료
https://funyphp.com/archive/mysql/18
https://hyang2data.tistory.com/3
https://jeffrey-oh.tistory.com/321
https://yrohh.tistory.com/395
https://deersoul6662.tistory.com/224

댓글목록

등록된 댓글이 없습니다.


Total 2,634건 5 페이지
  • RSS
기술자료 목록
열람
MySQL   3246  2022-11-22 07:34 ~ 2022-12-02 12:14  
2553
MySQL   3233  2022-11-21 12:10 ~ 2022-11-21 12:18  
2552
SQL   4617  2022-11-18 16:39 ~ 2023-08-24 00:54  
2551
MySQL   3346  2022-11-16 19:05 ~ 2023-03-03 17:04  
2550
PHP   3924  2022-11-16 18:17  
2549
PHP   4522  2022-11-15 11:55 ~ 2022-11-18 17:26  
2548
Android   3710  2022-11-13 17:31 ~ 2022-11-15 11:13  
2547
그누보드   3882  2022-11-10 20:41 ~ 2022-11-14 01:03  
2546
Android   3415  2022-11-09 15:35 ~ 2022-11-23 14:46  
2545
Android   3517  2022-11-08 19:18 ~ 2022-11-09 13:28  
2544
MySQL   3051  2022-10-31 16:21 ~ 2022-11-01 09:51  
2543
PHP   4458  2022-10-13 20:59 ~ 2022-10-14 09:44  
2542
MySQL   3233  2022-10-12 17:39  
2541
SQL   3157  2022-10-12 17:24  
2540
APP   3753  2022-10-11 14:23 ~ 2022-11-11 15:22  
2539
그누보드   3751  2022-10-07 20:11  
2538
PHP   3659  2022-10-06 14:29  
2537
PHP   3181  2022-10-06 12:20 ~ 2022-10-06 12:29  
2536
MySQL   4644  2022-09-29 00:24 ~ 2022-09-29 00:25  
2535
SQL   4032  2022-09-27 18:26  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2025 해피정닷컴. All Rights Reserved.