[SQL Server] 重複しているデータを1件を残し削除する方法 - DELETE TOP文

inno
2014-02-23 18:27 5556 0
[SQL Server] 重複しているデータを1件を残し削除する方法 - DELETE TOP文

たまに重複してはいけないデータが重複されたりします。
その時にそのデータの中で1件を残し他の重複データを削除する方法を説明します。

まず、テストの為に下記のSQLを実行してテーブルとデータを登録します。
今回は「aaa」という重複データを3件登録してテストを行いたいと思います。

CREATE TABLE dbo.TempData
(
StrVal varchar(10)
)

-- #### 「aaa」データを3件登録する。
INSERT INTO dbo.TempData (StrVal)
SELECT 'aaa' UNION ALL
SELECT 'bbb' UNION ALL
SELECT 'ccc' UNION ALL
SELECT 'aaa' UNION ALL
SELECT 'ddd' UNION ALL
SELECT 'eee' UNION ALL
SELECT 'fff' UNION ALL
SELECT 'aaa' UNION ALL
SELECT 'ggg' 
GO

-- #### 重複データを確認する。
SELECT StrVal, COUNT(StrVal) Cnt
FROM dbo.TempData
GROUP BY StrVal


重複データ確認結果



現在、「aaa」が3件登録されていますので、
1件を残し、残り2件のデータを削除したいと思います。

DELETE TOP(2) dbo.TempData
WHERE StrVal = 'aaa'

DELETE TOP(削除する件数)」で削除することができます。
上記のDELETE文を実行後に再度重複データの件数を確認してみましょう。

SELECT StrVal, COUNT(StrVal) Cnt
FROM dbo.TempData
GROUP BY StrVal

重複データ確認結果



コメント