重複データの削除 | 忘却曲線

重複データの削除

主キーのないテーブルに誤って重複レコードを作成してしまった場合。
(Oracleを使用している場合)

手作業で削除するデータが大量になってしまうと、面倒だしミスも起こりがち。
ROWIDを利用してみる。
条件に適合する最小のROWID以外のものは、削除の対象としてみる。

例)

テーブル名: sample_table
カラム名: c_1, c_2 (データ重複している)

-----
DELETE FROM sample_table st1
WHERE ROWID > (
SELECT

MIN(ROWID) FROM sample_table st2
WHERE
st1.c_1 = st2.c_1
AND
st1.c_2 = st2.c_2
)
-----


ただし、この方法は
「重複レコードのうち、どのレコードを削除してもかまわないのであれば」
って言うことになるけれど。

以上、今日の質問応対より(新入社員研修)。