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
になります。
このようにすればテーブル内でのレコードの重複を簡単に見つけ出すことができます。
