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

Oracleは条件に基づいて重複を削除します

    これは、次のクエリを使用して実現できます。

    delete from  tabela.lorik O
    where O.netamt = 0 
    AND EXISTS (SELECT 1 FROM tabela.lorik I
    WHERE I.ID = O.ID AND I.netamt <> 0)
    

    netamount = 0のレコードのみを削除する必要があると想定しています。 、そうでない場合は、以下にコメントしてください。

    ゼロ以外のエントリを1つ保持し、他のすべてのエントリを削除する場合(すべてゼロの場合、netamountとしてゼロを含む1つのエントリ 保持されます)次に、次のクエリを使用できます:

    DELETE FROM TABELA.LORIK O
    WHERE
        ROWID IN (
            SELECT
                RWID
            FROM
                (
                    SELECT
                        ROWID AS RWID,
                        ROW_NUMBER() OVER(
                            PARTITION BY ID
                            ORDER BY
                                CASE
                                    WHEN NETAMT = 0 THEN 2
                                    ELSE 1
                                END
                        ) AS RN
                    FROM
                        TABELA.LORIK
                )
            WHERE
                RN > 1
        );
    

    乾杯!!



    1. C#はユーザーコントロールを介してmysqlに接続します

    2. MySQLクエリ出力をExcelまたは.txtファイルに保存するにはどうすればよいですか?

    3. MySQL番地あいまい検索

    4. MySQL:選択し、グループ化して、行を別々の列に変換します:)