Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL - Разширено премахване на дубликати с помощта на ID NOT IN

Можете да използвате ROW_NUMBER аналитична функция и корелирайте изтриването с помощта на ROWID псевдоколона:

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 тук




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GROUP BY без агрегатна функция

  2. Стойности, разделени със запетая в Oracle

  3. Oracle SQL - Динамично преобразуване на редове в колони

  4. Има ли начин в ORACLE да се съединят няколко реда в един, като се използват две таблици, където крайните стойности са разделени със запетаи?

  5. Преобразуване на число в дата в oracle