Database/Mysql

[mysql] 중복 확인 및 하나만 남기고 제거

향식이 2021. 3. 30. 16:13

 중복 확인

 

SELECT * FROM 테이블 WHERE 검색할 필드 IN ( SELECT 검색할 필드 FROM 테이블 GROUP BY 검색할 필드 HAVING COUNT(*) > n)

 

 중복 데이터 전체 확인

 

select A.* from 테이블 A, (select 검색할필드명 from 테이블 group by 검색할 필드 having count(*) > n) B where A.필드 = B.필드

 

 중복이 2개일 경우 중복행 중 1개만 제거

 

DELETE FROM notes WHERE id IN (SELECT MIN(id) FROM notes GROUP BY name, date, value HAVING COUNT(*) > 1)

 

여기서 id 는 AUTO_INCREMENT 로, 기본 키 값을 증가의 자동 시퀀스를 생성하는 키이다. 

중복일 경우 id가 가장 작은 행을 지우겠다는 의미의 쿼리이다. 

 

 3개 이상일 경우 1개만 남기고 제거

 

수정중

반응형