sql >> Database teknologi >  >> RDS >> Oracle

SQL - Avanceret fjernelse af dubletter ved hjælp af ID NOT IN

Du kan bruge ROW_NUMBER analytisk funktion og korreler sletningen ved hjælp af ROWID pseudo-kolonne:

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 her




  1. SQL-udviklerfejl med deaktiver moduler og fortsæt

  2. hvordan vælger man kun række med max sekvens uden at bruge en underforespørgsel?

  3. 5 Databaseovervågningsvaner for succesrige DBA'er

  4. Sekventielle gennemløbshastigheder og feeds