Oracle에서는 DELETE 문을 사용하여 테이블에서 중복 행을 제거할 수 있습니다.
이를 수행하는 한 가지 방법은 INNER JOIN 절 및 ROWID 의사 열과 함께 하위 쿼리를 사용하는 것입니다.
데이터 중복제거 예시
다음은 DELETE 문을 사용하여 "employees"라는 테이블에서 중복 행을 제거하는 방법의 예입니다.
1
2
3
4
5
6
|
DELETE FROM employees
WHERE ROWID NOT IN (
SELECT MIN(ROWID)
FROM employees
GROUP BY column1, column2, ...
);
|
cs |
이 쿼리는 ROWID 의사 열을 사용하여 중복 행을 식별하고 MIN 함수를 사용하여 각 중복 세트 중 하나만 유지합니다. 쿼리에는 지정된 열(column1, column2 등)을 기준으로 행을 그룹화하는 GROUP BY 절도 포함됩니다. 이는 쿼리가 해당 열의 각 중복 값 집합에 대해 하나의 행만 유지함을 의미합니다.
자체 조인 및 상관 하위 쿼리를 사용하여 중복 행을 삭제할 수도 있습니다.
1
2
3
4
5
6
7
8
|
DELETE FROM employees a
WHERE (a.column1, a.column2, ...) IN (
SELECT column1, column2, ...
FROM employees
WHERE column1 = a.column1 AND column2 = a.column2 AND ...
GROUP BY column1, column2, ...
HAVING COUNT(*) > 1
);
|
cs |
이 쿼리는 열 값을 기준으로 중복 행을 제거합니다. 해당 열의 각 중복 값 집합에 대해 하나의 행을 유지합니다.
위의 쿼리를 수행하기 전에 테이블을 백업하고 먼저 작은 데이터 세트에서 테스트하여 예상대로 작동하는지 확인하는 것이 중요합니다.
(추가)테이블 중복제거 활성화/비활성화 명령어
Oracle에서 테이블 중복 제거를 활성화하는 명령은
"ALTER TABLE [테이블 이름] ENABLE ROW DUPLICATE CONSTRAINTS"
입니다.
테이블에 대한 중복 제거를 비활성화하는 명령은
"ALTER TABLE [테이블 이름] DISABLE ROW DUPLICATE CONSTRAINTS"
입니다.
'나혼자 웹사이트 만들기 > DB' 카테고리의 다른 글
[ORACLE] 조인 종류 및 함수 예시 (0) | 2023.01.14 |
---|---|
[ORACLE] FLASHBACK을 이용하여 데이터 복구 (0) | 2023.01.12 |
[ORACLE] 문자열 길이 구하기 (LENGTH, LENGTHB, LENGTHC 함수) (0) | 2022.09.14 |
[ORACLE] 첫 글자 대문자로 바꾸기 (INITCAP함수) (1) | 2022.09.13 |
[ORACLE] 소문자 바꾸기 (LOWER 함수) (0) | 2022.09.12 |
[ORACLE] 대문자 바꾸기 (UPPER 함수) (1) | 2022.09.11 |
댓글