IT/DataBase

[Oracle] Oracle 중복데이터 제거(feat. delete from table + group by having)

알 수 없는 사용자 2022. 11. 29.

[Oracle] Oracle 중복데이터 제거(feat. delete from table + group by having)

 

Oracle 중복된 데이터만 조회😉

select from table group by having절로 중복 데이터만 조회하는 건 아래처럼 조회하면 된다.

SELECT NAME, sum(1) hap 
FROM TMP_220512 t 
GROUP BY NAME
HAVING sum(1) > 1
;

결과는 아래처럼 name이 1개 이상인 중복데이터가 조회된다.

[Oracle] Oracle 중복데이터 제거(feat. delete from table + group by having) - Oracle 중복된 데이터만 조회😉

문득 위의 중복된 데이터만 제거하고 싶어서 해봤다.

아래처럼 쿼리를 날리면 된다.(더 좋은 방법이 있을 수도 있다.)

테이블 상태(인덱스 존재 등)에 따라 오래 걸릴 수도 있다.

 

중복된 데이터만 제거😄

먼저 group by having절로 중복데이터가 1개 이상인 데이터만 뽑고

그걸 서브쿼리에 넣은 후 DELETE문으로 삭제

DELETE FROM TMP_220512 t2 
WHERE NAME IN
(
SELECT NAME 
FROM TMP_220512 t 
GROUP BY NAME 
HAVING sum(1) > 1
)
;

[Oracle] Oracle 중복데이터 제거(feat. delete from table + group by having) - 중복된 데이터만 제거😄

내가 잊어버리지 않기 위해서 메모

[Oracle] Oracle 중복데이터 제거(feat. delete from table + group by having) - 중복된 데이터만 제거😄

댓글