重複データの削除
主キーのないテーブルに誤って重複レコードを作成してしまった場合。
(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
)
-----
ただし、この方法は
「重複レコードのうち、どのレコードを削除してもかまわないのであれば」
って言うことになるけれど。
以上、今日の質問応対より(新入社員研修)。
(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
)
-----
ただし、この方法は
「重複レコードのうち、どのレコードを削除してもかまわないのであれば」
って言うことになるけれど。
以上、今日の質問応対より(新入社員研修)。