📒 Database/Oracle

[ORACLE] ROWID를 이용하여 중복데이터 조회 및 제거

a n u e 2021. 11. 3. 10:33
SELECT CLASS, NAME, GENDER, GRADE
FROM STUDENT a
WHERE 1 = 1
AND ROWID > ANY (SELECT ROWID FROM STUDENT b
                        WHERE 1 = 1
                        AND a.NAME = b.NAME)

중복 데이터 중, 가장 최근에 등록되어진 데이터를 제외하고 삭제하고 싶다면?

SELECT CLASS, NAME, GENDER, GRADE
FROM STUDENT a
WHERE 1 = 1
AND ROWID < (SELECT MAX(ROWID) FROM STUDENT b
                      WHERE a.NAME = b.NAME);
                      
DELETE
FROM STUDENT a
WHERE 1 = 1
AND ROWID < (SELECT MAX(ROWID) FROM STUDENT b
                      WHERE a.NAME = b.NAME);