Oracleで重複する値を削除して1つだけを残す方法は?

Oracleデータベース表の重複値を削除し、重複値を1つだけ残すには、以下の方法を使用できます:

手段1:ROWIDを使用します。

DELETE FROM your_table
WHERE ROWID NOT IN (
    SELECT MAX(ROWID)
    FROM your_table
    GROUP BY column1, column2, ...
);

「your_table」をあなたのテーブル名に、そして「column1、column2、…」を重複を基準にする列名に置き換えてください。

方法2:ROW_NUMBER()を使用する。

DELETE FROM your_table
WHERE ROWID NOT IN (
    SELECT ROWID
    FROM (
        SELECT ROW_NUMBER() OVER (PARTITION BY column1, column2, ... ORDER BY column1) AS rn
        FROM your_table
    )
    WHERE rn > 1
);

「your_table」をあなたのテーブル名に、「column1、column2、…」を重複排除したい列の名前に置き換える必要があります。

bannerAds