sql >> Database >  >> RDS >> Oracle

SQL - Geavanceerde verwijdering van duplicaten met ID NOT IN

U kunt ROW_NUMBER . gebruiken analytische functie en correleer de verwijdering met behulp van de ROWID pseudo-kolom:

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<>fiddle hier




  1. Oracle Leeftijdsberekening vanaf geboortedatum en vandaag

  2. ora-00972 identifier is te lang orakel 10g

  3. Vind records waar join niet bestaat

  4. Selecteer willekeurige rij uit MySQL (met waarschijnlijkheid)