Oracle で重複データを削除する方法は何ですか?
Oracle内で重複データを削除する方法は、いくつかあります。
- 重複行の削除にROWIDを使用する:まず、ROWID関数を使用して重複する行を特定し、その後DELETE文を使用してこれらの行を削除します。例を次に示す:
DELETE FROM table_name
WHERE ROWID NOT IN (SELECT MAX(ROWID) FROM table_name GROUP BY column1, column2, ...);
- ROW_NUMBER()関数を使用して重複行を削除する方法:各行に番号を割り当てるためにROW_NUMBER()関数を使用し、その後、番号が1より大きい行を削除します。例は以下の通りです:
DELETE FROM (
SELECT column1, column2, ..., ROW_NUMBER() OVER (PARTITION BY column1, column2, ... ORDER BY column1) AS rn
FROM table_name
)
WHERE rn > 1;
- 重複行を削除するための一時テーブルの使用:まず、一時テーブルを作成し、重複行を削除したデータを一時テーブルに挿入し、次に元のテーブルからデータを削除し、最後に一時テーブルからデータを元のテーブルに再挿入します。以下に例を示します:
CREATE TABLE temp_table AS SELECT DISTINCT * FROM table_name;
DELETE FROM table_name;
INSERT INTO table_name SELECT * FROM temp_table;
DROP TABLE temp_table;
オラクルで重複データを削除する一般的な方法をいくつか示しましたが、どの方法を選択するかは具体的な状況や要件によります。