sql >> Database >  >> RDS >> Oracle

verwijder oude records groeperen op drie kolommen en sorteren op datum

Gebruik de ROW_NUMBER analytische functie om de rijen te vinden die niet de laatste zijn in elke groep en dan kunt u de ROWID gebruiken pseudo-kolom om mee te correleren in de DELETE :

DELETE FROM tmp_data
WHERE ROWID IN (
  SELECT rid
  FROM   (
    SELECT ROWID As rid,
           ROW_NUMBER() OVER (
             PARTITION BY col_2, col_3, col_6
             ORDER BY col_4 DESC
           ) AS rn
    FROM   tmp_data
  )
  WHERE rn > 1
)

Wat 22 rijen verwijdert.

db<>fiddle hier




  1. CodeIgniter - Een afbeelding uploaden via een formulier, de locatie van de afbeelding opslaan in de database

  2. Oracle:hoe UPSERT (bijwerken of invoegen in een tabel?)

  3. Verbinding maken met Oracle Database met Sql Server Integration Services

  4. Hoe voer ik databasetransacties uit met psycopg2/python db api?