環境
MySQL
※多分他のやつでも同じように動くはず
やりたいこと
タイトルの通り、SQLの適当なテーブルから、特定のカラムの値が重複しているレコードだけを抽出。
コード
SELECT * FROM <テーブル> GROUP BY <カラム...> HAVING COUNT(*) >= 2;
ちなみに、カラムを複数対象にしたい場合には、GROUP BYに複数のカラム(「,」区切り)を書くことができます。
例) users テーブル(id,name_sei,name_mei,age,sex)
同姓同名がテーブルにいるアカウントのみ抽出
SELECT * FROM users GROUP BY name_sei,name_mei HAVING COUNT(*) >= 2;
最後に
SQLで全件検索した後にawkを使って無理やりやろうとしてましたが、冷静に考えてみたらSQLの方が素直に書けて良いですね。
SQLでかけるようなときは、AWK自重します。