You can get duplicate rows by Analytic SQL:
SELECT rid, deptno, job, rn FROM (SELECT /*x parallel(a) */ ROWID rid, deptno, job, ROW_NUMBER () OVER (PARTITION BY deptno, job ORDER BY empno) rn FROM scott.emp a ) WHERE rn <> 1;
Get duplicate row count with Count(*) > 0.
SELECT /*x parallel(a,8) */ MAX(ROWID) rid, deptno, job, COUNT(*) FROM scott.emp a GROUP BY deptno, job HAVING COUNT(*) > 1;
To delete them:
DELETE FROM scott.emp WHERE ROWID IN ( SELECT rid FROM (SELECT /*x parallel(a) */ ROWID rid, deptno, job, ROW_NUMBER () OVER (PARTITION BY deptno, job ORDER BY empno) rn FROM scott.emp a) WHERE rn <> 1 );
No comments:
Post a Comment