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

Odstraňte duplicitní řádky v Oracle SQL a ponechte nejnovější záznamy

Zde je přístup využívající ID řádků:

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
    )

Poddotaz vygeneruje seznam ID řádků pro řádky, které nejsou nejnovější v jejich skupině (tj. všechny záznamy mající stejné par_num ,tran_num ) - nejnovější záznam na skupinu je identifikován pomocí row_number() . Vnější dotaz tyto řádky pouze odstraní.



  1. Při použití whereHas v Laravelu vyberte SUM z poddotazu

  2. Nesprávné dvojité hodnoty vrácené z mysql do java

  3. spool do souboru .csv pomocí smyčky for

  4. Omezte počet znaků ve sloupci dotazu mysql