오라클 중복제거 - 고유키값이 없을경우 중복삭제

오래만에 블로그 주제에 걸맞는 글을 적어봅니다. 이것저것 블로그 테스트겸해서 생활정보를 계속올리고 있습니다. 사실 아이티쪽에 큰 이슈가 없어서 나태해진것도 있고, 공부도 할 시간이 안나서 글을 적기가 매우 힘드네요 ㅎㅎ

 

자바강의나 혹은 PHP 등을 공부하면서 블로그에 틈틈히 적을려고 하는데 이상하게 공부를 하련 회식에 야근에 그래서 생활정보 글도 때우고 있는 상태입니다.

 

 

 

 

이전에 중복제거에 관련해서 글을 쓴적이 있습니다.

 

2015/07/04 - [개발관련/ORACLE] - [오라클팁] 그룹함수로 중복된 컬럼 제거하기

 

이전에는 ROWID 가 아닌  그룹을 설정해서 처리를 하였는데요. 보다 간단하게 처리할 수 있는 오라클 중복제거 방법이 있어서 소개해 드립니다.

 

 

 
 

 

 

 

우선 중복제거를 위해서 ROWID란 부분을 살펴보겠습니다.

 

오라클에서는 한 ROW를 생성할때 고유키값을 저장하고 있는데요 이런 키값을 ROWID라 명명하고 부르고 있습니다. 조회를 하면 일반적으로 보이지는 않습니다만 보이지 않게 지정이 되어 있어요^^

 

SELECT MAX(ROWID), MIN(ROWID) FROM 테이블;

 

이렇게 살펴보시면 ROWID가 다른걸 발견하실 수 있습니다. 그래서 고유키값이 없어도 중복된 데이터를 손쉽게 제거를 하실 수가 있는데요. 그럼 쿼리를 한번 만들어 보겠습니다.

 

SELCT * FROM 테이블 a
               WHERE 1=1
                    AND rowid = (SELECT max(rowid)
                                              FROM 테이블 b
                                            WHERE a.기준값 = b.기준값 );

 

쿼리가 파악이 되시나요? ROWID으로 조인을 다시 걸어서 나중에 들어온 데이터만 추출하는 쿼리입니다. 셀렉트를 DELETE로 바꿔주시면 중복된 데이터를 삭제하실 수 있습니다.

 

항상 DELETE를 하기 전에는 먼저 셀렉트를 하시고 난뒤 전체 데이터와 삭제할 데이터를 꼭 확인하시고 지워주시기 바랍니다. 오라클 중복제거 방법으로 ROWID를 활용하는 방법을 살펴보았습니다.

 

파이유 IT LIFE  - 아이티 정보공유 블로그!!!

 

#글,사진에 대한 저작권은 파미유 IT LIFE에 있으며, 본문에 사용되는 이미지는 대상사이트와 이미지 배포사이트에서 가져옵니다.

#내용을 참고하셔도 상관은 없지만 퍼가신다면 출처를 꼭 밝혀주시기바랍니다.