sql >> Databáze >  >> RDS >> Oracle

SQL – Pokročilé odstraňování duplicit pomocí ID NOT IN

Můžete použít ROW_NUMBER analytickou funkci a korelovat smazání pomocí ROWID pseudosloupec:

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 zde




  1. Vysvětlete chování při mapování sekvence automatického zvýšení složeného ID pomocí režimu spánku

  2. problém s časovačem ve formě orákula

  3. Co když smažu ibdata1 v mysql (LINUX)

  4. Vlastní agregační funkce (concat) v SQL Server