hanker

MySQL - 중복 데이터 찾기 (feat. group by ...having) 본문

DATABASE/MYSQL

MySQL - 중복 데이터 찾기 (feat. group by ...having)

hanker 2024. 10. 13. 13:32
반응형

중복데이터 찾는 방법에 대해서 알아보자.

 

이 글에서 중복데이터 찾을 때 group byhaving 절을 써서 찾을 예정이다

 

이런 데이터가 있다고 가정해보자.

 

USER_ID 값이 중복 된 값이 보인다. 물론 아이디가 중복될 일은 없겠지만, 예시를 들기 위해서 만들었다.

SELECT 
    *, 
    COUNT(*) AS COUNT 
FROM 
    TEST.USER 
GROUP BY USER_ID

 

결과 .

USER_ID를 기준으로 중복 값들이 보인다. 1로 표시된 애들은 중복되지 않은 데이터이다.

 

더 나아가 having 절을 사용해서 중복되지 않은 데이터를 제외하고 찾아보자.

SELECT
    *,
    COUNT(*) AS COUNT
FROM
    TEST.USER
GROUP BY USER_ID
HAVING COUNT(*) > 1

HAVING 절을 사용해서 중복된 데이터를 찾는 쿼리이다.

깔끔하게 이제 나온다.

 

여기까지가 기본적으로 쓰는 부분인데, 해당 기능을 보다 더 확장 시켜서 풍성한 조회 조건을 만들 수 있다.

 

응용해서 하나만 더 예로 들어보자

SELECT 
    *, 
    COUNT(*) AS COUNT
FROM TEST.USER 
GROUP BY SUBSTRING(USER_NAME, 1, 1) 
HAVING COUNT(*) > 3

데이터들 중에서 성이 3개 이상인 경우를 찾는 쿼리이다.

 

결과.

데이터가 조금 밖에 없어서 유용하다? 라는 느낌은 아닐지 몰라도 데이터가 많아지면 많아질수록 많이쓰게 된다. 

 

감사!

 

 

 

끝.

반응형