Db2で重複のあるすべてのレコードを削除するにはどうすればよいですか。私はさまざまな回答を見てきましたが、それらは重複を削除するだけで、テーブルのセットから1つのレコードを残しています。これは私がすでに見つけたものです。
DELETE FROM(SELECT ROWNUMBER()OVER(PARTITION BY ONE、TWO、THREE AS AS RN FROM SESSION.TEST)AS A WHERE RN> 1;
しかし、テーブルに重複を残さない重複を含むすべてのレコードを削除するクエリが必要です。
A A 1 <-これを削除
A A 2 <-これも削除
B B 3
C C 4
PS:すべてのレコードを削除してテーブルを空にするため、RN> = 1を使用しても機能しません。
必要な一意性制約が_(one,two)
_であるとすると、これを行う1つの方法を次に示します。
DELETE FROM session.test WHERE (one, two) IN ( SELECT one, two FROM session.test GROUP BY one, two HAVING COUNT(*) > 1 )