Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SQL - Zaawansowane usuwanie duplikatów przy użyciu ID NOT IN

Możesz użyć ROW_NUMBER funkcji analitycznej i skoreluj usunięcie za pomocą ROWID pseudokolumna:

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 tutaj




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP, Oracle i ODBC:Jak sprawdzić, czy zestaw wyników jest pusty?

  2. Konwertuj liczbę na datę sql oracle

  3. Wyodrębnij Oracle LONG do ciągu w VBA

  4. Różnica między literałami N'String' i U'String' w Oracle

  5. Utwórz użytkownika ze wszystkimi uprawnieniami w Oracle