[SQL] N개의 컬럼을 대상으로 중복된 ROW 찾기

이동기·2022년 10월 27일
2
post-thumbnail

업무를 하다가 N개 이상의 컬럼을 대상으로 중복된 ROW를 찾는 방법이 다른 포스팅에도 잘 없는 것 같아서 공유하고자합니다.

아래 쿼리는 Oracle 18c 기준으로 작성된거고 MYSQL에서도 CONCAT기능을 이용하면 동일하게 사용가능 할 것 같습니다.

1개의 컬럼을 대상으로 중복된 ROW 찾기

SELECT B.TARGET, COUNT(B.TARGET) AS CNT
FROM TB_TEST B
GROUP BY B.TARGET
HAVING COUNT(B.TARGET) > 1;

N개의 컬럼을 대상으로 중복된 ROW 찾기

SELECT B.TARGET, COUNT(B.TARGET) AS CNT
FROM(
   SELECT A.IDX, (TARGET1 || ',' || TARGET2) AS TARGET
   FROM TB_TEST A
) B
GROUP BY B.TARGET
HAVING COUNT(B.TARGET) > 1;

N개의 컬럼 중복찾기에 대해서 요약하자면 N개(TARGET1, TARGET2 ...)의 컬럼을 1개(TARGET)로 합친 후 1개로 합친 컬럼을 그룹핑하여 그 개수를 새는 것이다. 여기서 개수(CNT)가 1개이상을 넘어간다면 AND조건으로 중복된 데이터가 있다는 뜻이다.

profile
개발자가 되고 싶은 '개'발자입니다.

0개의 댓글