##ROWID를 사용하여 중복된 데이터를 제거 할 수 있다.
#첫번째.
DELETE FROM 테이블명
WHERE ROWID IN (
SELECT ROWID FROM (
SELECT * FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY 컬럼명 ORDER BY 컬럼명) AS num
FROM 테이블명
)
WHERE num > 1 (-> num의 값이 1초과인 데이터들만 삭제)
)
);
#두번째. (중복된 데이터들 중에서 나중에 등록된 데이터 제거)
DELETE FROM 테이블명 별칭a
WHERE ROWID > (SELECT MIN(ROWID) FROM 테이블명 별청b
WHERE b.컬럼명 = a.컬럼명);
#세번째. (중복된 데이터들 중에서 나중에 등록된 데이터를 살리고 나머지를 제거)
DELETE FROM 테이블명 별칭a
WHERE ROWID < (SELECT MAX(ROWID) FROM 테이블명 별칭b
WHERE a.컬럼명 = b.컬럼명);
단, 세번째 방법의 경우 나중에 생성된 데이터의 ROWID가 작을 수도 있기 때문에 나중에 들어온 데이터를 살리는 경우는 맞지 않을 수 있다.
출처: http://rahm.tistory.com/52 [RAHM]
'공부' 카테고리의 다른 글
오라클 SELECT 중복 제외 시키기 (0) | 2017.08.09 |
---|---|
아파치 다이렉티브 (0) | 2017.08.07 |
모바일에서 jQueryUI 사용 (0) | 2016.06.02 |
MySQL Workbench 스키마(데이터베이스) 만들기 & 사용자 계정 생성, 권한 부여 방법 (0) | 2016.05.27 |
ajax 동기 방식 방법 (데이터가 호출되고 다음 코드 실행) (0) | 2016.05.27 |