반응형
테이블 내에서 중복값을 확인해야 할 일이 있어서 아래글을 참고하여 확인 후에,
제가 한번 더 테스트하여 정리하고자 글을 올립니다.
출처 : https://gent.tistory.com/485
제가 겪었던 상황은 특정 파티션테이블의 인덱스가 UNUSABLE상태로 빠져있어서 rebuild를 시도했는데, 중복값이 있어서 rebuild가 안되는 상황이었습니다.
그래서 실제로 데이터가 중복값이 있는지 확인해보았습니다.
저는 emp테이블로 중복값을 확인해보겠습니다.
기본 emp 테이블 확인
중복값이 없는 14개의 값이 들어 있습니다.
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- -------------------- --------- --------- ------
7839 KING PRESIDENT 5000 10
7698 BLAKE MANAGER 7839 2850 30
7782 CLARK MANAGER 7839 2450 10
7566 JONES MANAGER 7839 2975 20
7654 MARTIN SALESMAN 7698 1250 1400 30
7499 ALLEN SALESMAN 7698 1600 300 30
7844 TURNER SALESMAN 7698 1500 0 30
7900 JAMES CLERK 7698 950 30
7521 WARD SALESMAN 7698 1250 500 30
7902 FORD ANALYST 7566 3000 20
7369 SMITH CLERK 7902 800 20
7788 SCOTT ANALYST 7566 3000 20
7876 ADAMS CLERK 7788 1100 20
7934 MILLER CLERK 7782 1300 10
14 rows selected.
7839와 7788번을 한번 더 삽입하여 두개의 데이터가 중복값이 생기게 합니다.
insert into emp
select * from emp where empno in (7839,7788);
commit;
SQL> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ---------- --------- ----- -------------------- --------- --------- ------
7839 KING PRESIDENT 5000 10
7788 SCOTT ANALYST 7566 3000 20
7839 KING PRESIDENT 5000 10
7698 BLAKE MANAGER 7839 2850 30
7782 CLARK MANAGER 7839 2450 10
7566 JONES MANAGER 7839 2975 20
7654 MARTIN SALESMAN 7698 1250 1400 30
7499 ALLEN SALESMAN 7698 1600 300 30
7844 TURNER SALESMAN 7698 1500 0 30
7900 JAMES CLERK 7698 950 30
7521 WARD SALESMAN 7698 1250 500 30
7902 FORD ANALYST 7566 3000 20
7369 SMITH CLERK 7902 800 20
7788 SCOTT ANALYST 7566 3000 20
7876 ADAMS CLERK 7788 1100 20
7934 MILLER CLERK 7782 1300 10
16 rows selected.
중복값 확인하는 쿼리(GROUP BY 사용)
중복이 의심되는 컬럼값을 GROUP절에 넣어서 COUNT(*) >1 인 컬럼을 구하면 됩니다.
SQL> select empno,ename,deptno,count(*) as cnt from emp
group by empno,ename,deptno having count(*) > 1;
EMPNO ENAME DEPTNO CNT
----- ---------- ------ ---------
7788 SCOTT 20 2
7839 KING 10 2
2 rows selected.
임의로 삽입했던 7788,7839의 count가 2로 보이면서 중복값이 있는것을 확인 할 수 있습니다.
반응형
'Oracle > 운영' 카테고리의 다른 글
[병렬] Parallel DML 시 실제로 모든 프로세스가 일하는지? (0) | 2023.01.19 |
---|---|
세션 모니터링 쿼리 (0) | 2023.01.18 |
[split] maxvalue가 있는 range 파티션에 다음 파티션 추가하기 (0) | 2022.11.11 |
[ASM] asmcmd에도 alias가 있다? (0) | 2022.11.05 |
UNION 과 UNION ALL (0) | 2022.10.26 |
댓글