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

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

본문 바로가기

사이트 내 전체검색

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

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 111건 1 페이지
  • RSS
기술자료 목록
111
MySQL   1025  2024-03-29 14:14 ~ 2024-03-29 14:14  
110
MySQL   1550  2024-01-08 17:37 ~ 2024-03-14 16:00  
109
MySQL   4532  2023-04-25 11:36 ~ 2023-04-25 11:37  
108
MySQL   3224  2023-01-30 12:11 ~ 2023-01-30 12:23  
107
MySQL   4087  2022-12-28 21:09 ~ 2022-12-29 06:32  
106
MySQL   3171  2022-12-02 15:40 ~ 2022-12-02 15:41  
105
MySQL   6141  2022-11-22 07:37  
열람
MySQL   3200  2022-11-22 07:34 ~ 2022-12-02 12:14  
103
MySQL   3177  2022-11-21 12:10 ~ 2022-11-21 12:18  
102
MySQL   3275  2022-11-16 19:05 ~ 2023-03-03 17:04  
101
MySQL   2982  2022-10-31 16:21 ~ 2022-11-01 09:51  
100
MySQL   3159  2022-10-12 17:39  
99
MySQL   4571  2022-09-29 00:24 ~ 2022-09-29 00:25  
98
MySQL   7487  2022-07-29 19:40 ~ 2022-07-29 19:49  
97
MySQL   5389  2021-12-08 19:53  
96
MySQL   5675  2021-12-08 18:43 ~ 2021-12-08 19:43  
95
MySQL   4770  2021-12-05 00:09 ~ 2021-12-08 19:42  
94
MySQL   5095  2021-12-02 08:36 ~ 2021-12-02 14:57  
93
MySQL   7356  2021-11-24 00:17 ~ 2021-11-24 00:22  
92
MySQL   4192  2021-11-08 16:13 ~ 2021-11-08 17:29  

검색

해피정닷컴 정보

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

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