GROUP BYとHAVINGを使ってデータの重複を探しだすSQL

プログラミング SQL Server

SQLでGROUP BYとHAVINGを使ってデータの重複を探して見ます。

スポンサーリンク

GROUP BYとHAVINGで重複を探す

SQLでGROUP BYとHAVINGを使ってデータの重複を探して見ます。

実行するSQL

--テーブル作成
CREATE TABLE test_table
(
     no     INT
    ,name   VARCHAR(20)
)

--データ作成
INSERT INTO test_table VALUES ( 1, '太郎さん1' )
INSERT INTO test_table VALUES ( 2, '二郎さん' )
INSERT INTO test_table VALUES ( 3, '三郎さん' )
INSERT INTO test_table VALUES ( 4, '四郎さん' )
INSERT INTO test_table VALUES ( 1, '太郎さん2' )
INSERT INTO test_table VALUES ( 5, '五郎さん1' )
INSERT INTO test_table VALUES ( 1, '太郎さん3' )
INSERT INTO test_table VALUES ( 5, '五郎さん2' )

--GROUP BYとHAVINGを使って重複を取得
SELECT
     no        AS 重複しているNO
    ,COUNT(no) AS 重複している件数
FROM
    test_table
GROUP BY
    no
HAVING COUNT(no) > 1

--テーブル削除
DROP TABLE test_table

GROUP BYでCOUNTした結果でその件数が2件以上あるものをHAVINGで抜き出しています。

実行結果は

重複しているNO 重複している件数
     1             3
     5             2

になります。

このようにすればテーブル内でのレコードの重複を簡単に見つけ出すことができます。

タイトルとURLをコピーしました