본문 바로가기
Computer Science/Database

MySQL | GROUP BY와 HAVING으로 컬럼 중복값 찾기

by YIAN 2021. 12. 5.

 

😏 요구사항 (Requiredments)

 

처음부터 테이블을 잘 만들어두면 좋겠지만, 시스템이나 서비스를 오랜 기간 운영하다 보면 컬럼을 변경할 일이 생길 수 있습니다. 유니크 인덱스(UNIQUE INDEX)는 컬럼에 중복된 값이 포함되어 있으면 생성할 수 없습니다. 이번에 컬럼을 변경하면서, 유니크 인덱스를 걸어두어도 괜찮을지 고민하던 차에 기존 데이터에 중복값이 있는지 확인하려고 합니다.

 

 

😚 해결방안 (Solution or Next step)

 

저의 경우에는 찾고자 하는 조건 컬럼이 3개여서 다음과 같이 사용했습니다.

 

SELECT a_column, b_column, c_column, count(1) AS cnt 
FROM table_name 
GROUP BY a_column, b_column, c_column 
HAVING cnt > 1;
  • table_name: 테이블 명을 넣어주세요.
  • a_column, b_column, c_column: 해당하는 컬럼 명을 넣어주세요.

 

 

😁 회고 (Retrospective)

 

사실 이 코드는 업무 중에 주워온 코드 조각입니다. DB 팀분께 다른 업무 관련 요청을 드린 것을 확인하고 나서, 리얼 환경 테이블 데이터를 직접 볼 수 없는 상황이라 한 번 여쭤봤습니다. 확인해주실 때 SQL 문을 알려주셔서, 감사하게도 코드 조각을 수집했습니다. 이 글은 그것의 기록입니다. 😆

 

 

댓글