sql >> データベース >  >> RDS >> Oracle

Oracle SQLで重複する行を削除し、最新のエントリを残します

    行IDを使用するアプローチは次のとおりです。

    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
        )
    

    サブクエリは、グループ内で最新ではない行(つまり、同じpar_num ,tran_numを持つすべてのレコード)の行IDのリストを生成します。 )-グループごとの最新のレコードは、row_number()を使用して識別されます 。外側のクエリはそれらの行を削除するだけです。



    1. MySQL ROUND()関数–数値を指定された小数点以下の桁数に丸めます

    2. 動的入力パラメーターを「即時実行」に渡す

    3. 初歩的な問題:基本的なPL / SQLコンソール出力?

    4. VS2017でADO.NETエンティティデータモデルを追加しても何も起こりません