Oracle

게시글 보기
작성자 유건데이타 등록일 2015-06-22
제목 SQL*PLUS에서 중복 DATA 처리 방법
SQL*PLUS에서 중복 DATA 처리 방법
==============================

PURPOSE
-------
DB에 들어 있는 data 중 중복되어 들어 있는 data를 다루는 방법입니다.


EXPLANATION
-----------

중복 data를 찾아 모두 display 하는 방법
중복 data를 찾아 한번만 display하는 방법
sqlplus 에서 중복 data의 경우 처음 record만 display 하게 하는 방법
이 나와 있다.
Delete 방법은 bul 11067를 참조 하세요.


EXAMPLE
---------

1. 중복 data를 찾아 모두 display 하는 방법

SQL> select * from dept;

DEPTNO DNAME LOC
---------- -------------- -------------
0 ss tt
1 tt ii
2 yy gg
1 tt uu
0 smlee insert

SQL> select * from dept a
where 1 < (select count(deptno) from dept b where a.deptno =b.deptno);

DEPTNO DNAME LOC
---------- -------------- -------------
0 ss tt
1 tt ii
1 tt uu
0 smlee insert


2. 중복 data를 찾아 한번만 display하는 방법

SQL> select rowid,deptno,dname,loc from dept;

ROWID DEPTNO DNAME LOC
------------------ ---------- -------------- -------------
AAAAlXAAEAAAA53AAA 0 ss tt
AAAAlXAAEAAAA53AAB 1 tt ii
AAAAlXAAEAAAA53AAC 2 yy gg
AAAAlXAAEAAAA53AAD 1 tt uu
AAAAlXAAEAAAA53AAF 0 smlee insert


1)
SQL> select * from dept a where rowid < (select max(ROWID) from dept where dept.deptno =a.deptno)
DEPTNO DNAME LOC
---------- -------------- -------------
0 ss tt
1 tt ii
2)
SQL> select * from dept e WHERE rowid >
(SELECT min(rowid) FROM dept X WHERE X.Deptno = E.deptno);

DEPTNO DNAME LOC
---------- -------------- -------------
0 smlee insert
1 tt uu


3. sqlplus 에서 중복 data는 처음에만 display 하게 하는 방법

SQL> select * from dept order by deptno;

DEPTNO DNAME LOC
---------- -------------- -------------
0 ss tt
0 smlee insert
1 tt ii
1 tt uu
2 yy gg

SQL> break on deptno
SQL> select * from dept order by deptno;

DEPTNO DNAME LOC
---------- -------------- -------------
0 ss tt
smlee insert
1 tt ii
tt uu
2 yy gg
Comment
등록된 코멘트가 없습니다.