Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL - Suppression avancée des doublons à l'aide de l'ID NOT IN

Vous pouvez utiliser ROW_NUMBER fonction analytique et corréler la suppression à l'aide du ROWID pseudo-colonne :

DELETE FROM my_table
WHERE ROWID IN (
  SELECT ROWID
  FROM   (
    SELECT ROW_NUMBER() OVER (
             PARTITION BY student_id, subject_id, class_id
             ORDER BY expertise_lvl DESC
           ) AS rn
    FROM   my_table
  )
  WHERE  rn > 1
)

db<>violon ici