[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 行処理されました)

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する