web-dev-qa-db-ja.com

db2で重複のあるすべてのレコードを削除します。 (重複レコードだけではありません)

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を使用しても機能しません。

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 )

2
Fred Sobotka