MySQLで重複した値をもつ行を取得する方法
まずは、データを作るところから。
CREATE TABLE test ( id BIGINT NOT NULL , name TEXT NOT NULL , age SMALLINT NOT NULL ) ENGINE = InnoDB; INSERT INTO test (id, name, age) VALUES ('1', 'nagatomo', '31'); INSERT INTO test (id, name, age) VALUES ('2', 'yoshida', '28'); INSERT INTO test (id, name, age) VALUES ('3', 'honda', '30'); INSERT INTO test (id, name, age) VALUES ('4', 'okazaki', '31'); INSERT INTO test (id, name, age) VALUES ('5', 'kagaawa', '28'); INSERT INTO test (id, name, age) VALUES ('6', 'usami', '25'); INSERT INTO test (id, name, age) VALUES ('3', 'kubo', '23');
そして、idが重複しているデータをピックアップします。
mysql> SELECT * FROM test GROUP BY id HAVING COUNT(*) >= 2;
HAVING COUNT(*) >= 2 で、2つ以上重複している行だけをピックアップします。