2021년 11월 29일 월요일

오라클 테이블에서 중복레코드, 중복행을 제거하는 방법을 음성없이 영상으로 준비했습니다. 간단히 살펴보세요~ 오라클 중복레코드삭제(ROWID, PK, ROWNUM, EXISTS, 조인, NOT IN이용)

 

오라클 중복레코드삭제(ROWID, PK, ROWNUM, EXISTS, 조인, NOT IN이용)

 

오라클 테이블에서 중복레코드, 중복행을 제거하는 방법을 음성없이 영상으로 준비했습니다. 간단히 살펴보세요~ 오라클 중복레코드삭제(ROWID, PK, ROWNUM, EXISTS, 조인, NOT IN이용)


https://youtu.be/FNTNis91j2g

 

------------------------------------------------------------

-- 오라클에서 중복 레코드 삭제하는 방법

-- How to delete duplicate records in oracle table

------------------------------------------------------------


https://www.youtube.com/watch?v=HAN5QruWjxU&list=PLxU-iZCqT52Dlz0zGgFiq1mBz21arFUHS&index=23&t=143s 


-- 실습테이블 생성

drop table dup_test;

create table dup_test (

id number generated as identity,  -- Primary Key

name varchar2(100),

city   varchar2(100));


insert into dup_test (name, city) values ('가길동' , '서울');

insert into dup_test (name, city) values ('나길동' , '인천');

insert into dup_test (name, city) values ('다길동' , '대전');

insert into dup_test (name, city) values ('라길동' , '전주');

insert into dup_test (name, city) values ('바길동' , '부산');

insert into dup_test (name, city) values ('가길동' , '서울');  --중복

insert into dup_test (name, city) values ('나길동' , '인천');  --중복


commit;


select * from dup_test;


--1. 중복데이터 삭제 방법1(ROWID가 다르다는 것을 이용)

delete from dup_test a

where a.rowid > any (select b.rowid from dup_test b 

                          where a.name = b.name 

                          and a.city = b.city);


select * from dup_test;

rollback;  -- 삭제취소


-- 2. 중복데이터 삭제 방법2(주키, Primary Key가 다르다는 것을 이용)

delete from dup_test a

where a.id > (select min(b.id) from dup_test b 

                where a.name = b.name 

                and a.city = b.city);

                

select * from dup_test;

rollback;  -- 삭제취소              


-- 3. 중복데이터 삭제 방법3(중복되는 데이터의 ROWNUM을 이용)                

delete from dup_test a

where a.id in (select c.id

                 from (

                          select b.id, rownum rn

                          from dup_test b

                          where a.name = b.name 

                          and a.city = b.city

                        ) c

                where c.rn > 1

                 );

                 

select * from dup_test;

rollback;  -- 삭제취소


--4. 중복데이터 삭제 방법4(EXISTS 이용)      

delete from dup_test a

where EXISTS (select  1

                  from dup_test b

                  where a.name = b.name 

                  and a.city = b.city

                  group by b.name, b.city

                  having min(b.id) != a.id);


select * from dup_test;

rollback;  -- 삭제취소


--5. 중복데이터 삭제 방법4(JOIN을 이용)      

delete from dup_test a

where a.id in 

(

  select b.id

  from  dup_test b

  join   dup_test c on 

  (

    b.name = c.name 

    and b.city = c.city

    and b.id > c.id

  )

);


select * from dup_test;

rollback;  -- 삭제취소


--6. 중복데이터 삭제 방법6(NOT IN을 이용) 

delete from dup_test a

where (id, name, city) not in ( select min( id ), name, city 

                                     from dup_test 

                                     group by name, city );

                                     

select * from dup_test;

rollback;  -- 삭제취소

#중복레코드삭제#중복데이터삭제#중복행삭제#오라클동영상#ORACLE동영상#오라클교육#ORACLE교육#오라클강의#오라클강좌#오라클학원#ORACLE학원, 중복레코드삭제, 중복데이터삭제, 중복행삭제, 오라클동영상, ORACLE동영상, 오라클교육, ORACLE교육, 오라클강의, 오라클강좌, 오라클학원, ORACLE학원 

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...