sql >> Database >  >> RDS >> Oracle

Verwijder dubbele rijen in Oracle SQL en laat de laatste vermeldingen achter

Hier is een benadering die de rij-ID's gebruikt:

delete from transaction
where 
    last_update = date '2020-03-01'
    and rowid in (
        select rid
        from (
            select 
                rowid rid, 
                row_number() over(partition by par_num ,tran_num order by last_update desc) rn
            from transaction                
        ) t
        where rn > 1
    )

De subquery genereert de lijst met rij-ID's voor rijen die niet de laatste in hun groep zijn (dwz alle records met hetzelfde par_num ,tran_num ) - het meest recente record per groep wordt geïdentificeerd met row_number() . De buitenste query verwijdert alleen die rijen.



  1. Bibliotheek niet geladen:@rpath/libmysqlclient.21.dylib Reden:afbeelding niet gevonden Django-migratiefout met mysqlclient DB-stuurprogramma en MySQL 8 met macOS

  2. Het transactielogboek voor database 'databasenaam' is vol.

  3. Voor Nvarchar (Max) krijg ik maar 4000 tekens in TSQL?

  4. Beperk SQL tot de som van de waarde van de rij