Pages

2013/12/21

[SQL Server] データが重複してしているレコードを抽出する

どの値が重複しているか不明で、そのレコードを取得したい場合は、以下のような条件で検索する。
なお、この例では、一時テーブルを使用している。
CREATE TABLE #T1
(
 ID NUMERIC(3)
 ,GIVEN_NAME NVARCHAR(50) 
)

INSERT INTO #T1 (ID,GIVEN_NAME)
VALUES (11,'Taro'),(12,'Jiro'),(100,'Saburo'),(11,'Siro'),(15,'Goro'),(100,'Rokuro'),(17,'Sitiro')

-- ID が重複しているレコードを抽出する。
SELECT * FROM #T1 T1
WHERE EXISTS
(
 SELECT ID FROM #T1
 WHERE T1.ID = #T1.ID
 GROUP BY #T1.ID
 HAVING COUNT(*) > 1
 
)
ORDER BY ID

DROP TABLE #T1

結果は以下のようになる。
ID が 11 と 100 のレコードで重複が発生していることがわかった。
ID                                      GIVEN_NAME
----------------------- -----------------------
11                                      Taro
11                                      Siro
100                                     Rokuro
100                                     Saburo

(4 行処理されました)
Related Posts Plugin for WordPress, Blogger...