同じ値が入っているカラムを抽出するSQL

※当サイトではアフィリエイト広告を利用しています

後からデータベースのテーブルに対してPKを設定しようとしたところ、同じ値が入っていて設定できないという事象がありました。

そこで、問題となるデータを抽出するために、同じ値が入っているカラムを抽出するSQLクエリの書き方について、Oracle、MySQL、PostgreSQL、SQLiteの各データベースの例をメモしておきます

Oracle

Oracleデータベースでは、GROUP BY句とHAVING句を組み合わせて、同じ値が複数回出現するカラムを抽出します。

SELECT your_column, COUNT(*)
FROM your_table
GROUP BY your_column
HAVING COUNT(*) > 1;

このクエリでは、your_tableというテーブルのyour_columnというカラムをグループ化し、HAVING COUNT(*) > 1で同じ値が2回以上出現するカラムを抽出します。

MySQL

MySQLでも同様に、GROUP BY句とHAVING句を使用して同じ値が入っているカラムを抽出します。

SELECT your_column, COUNT(*)
FROM your_table
GROUP BY your_column
HAVING COUNT(*) > 1;

このクエリもOracleと同じ方法で、指定したカラム内で重複する値を持つ行を見つけることができます。

PostgreSQL

PostgreSQLでも、同様の構文を使用して重複するカラムを抽出します。

SELECT your_column, COUNT(*)
FROM your_table
GROUP BY your_column
HAVING COUNT(*) > 1;

PostgreSQLにおけるGROUP BY句とHAVING句の使い方も、他のDBMSと同様です。

SQLite

SQLiteでも、GROUP BY句とHAVING句を使用して同じ値が入っているカラムを抽出することができます。

SELECT your_column, COUNT(*)
FROM your_table
GROUP BY your_column
HAVING COUNT(*) > 1;

SQLiteも他のDBMSと同様の方法で重複する値を持つカラムを抽出できます。

コメント