COUNT(*)とGROUP BY句を使ってMySQLの列内にある重複値を確認する方法
SQLでは、COUNT(*)とGROUP BY句を組み合わせることで、特定の列に同じ値が何回繰り返されているか(重複の回数)を簡単に調べることができます。
COUNT(*)とGROUP BYによる重複チェックの基本
以下は、テーブル「Student」の「name」列に対してCOUNT(*)とGROUP BY句を使用した実行例です。
mysql> select count(*),name from student group by name; +----------+---------+ | count(*) | name | +----------+---------+ | 1 | Aarav | | 2 | Gaurav | | 1 | Harshit | +----------+---------+ 3 rows in set (0.00 sec)
このクエリの結果セットを見ると、どの値が何回繰り返されているのかが一目でわかります。上記の例では、「Gaurav」という値が「name」列内で2回出現していることが確認できます。つまり、count(*)の値が2以上になっている行は、その値が列内で重複していることを意味します。
SELECT * で元データを確認して検証する
この結果は、以下のようにSELECT *クエリでテーブル全体のデータを表示することでも検証できます。
mysql> Select * from Student; +------+---------+---------+-----------+ | Id | Name | Address | Subject | +------+---------+---------+-----------+ | 1 | Gaurav | Delhi | Computers | | 2 | Aarav | Mumbai | History | | 15 | Harshit | Delhi | Commerce | | 20 | Gaurav | Jaipur | Computers | +------+---------+---------+-----------+ 4 rows in set (0.00 sec)
全件取得の結果からも、Idが1と20の2つのレコードで名前が「Gaurav」になっていることがわかり、GROUP BYを使った集計結果と一致しています。
ポイントまとめ
- COUNT(*)は、各グループの行数をカウントする集計関数です。
- GROUP BY句を指定すると、その列の同じ値ごとに行がグループ化されます。
- count(*)が2以上の値は、その列内でデータが重複していることを示します。
-
MySQLでブール(BOOLEAN)列にデフォルト値1を設定・変更する方法
MySQLでは、ALTER TABLE文とDEFAULT句を組み合わせることで、既存のブール(BOOLEAN)型の列にデフォルト値「1」を割り当てることができます。あらかじめ設定しておけば、INSERTコマンド実行時にその列へ値を明示的に指定しなくても、自動的に1が格納されます。 サンプルテーブルを作成する まずはテーブルを作成しましょう。 mysql> create table DemoTable ( isAdult int ); Query OK, 0 rows affected (1.39 sec) 既存の列にデフォルト値1を設定する
-
MySQLのMAX()集計関数で列の最大値を取得する方法
MySQLでは、列の最大値を取得するために、あらかじめ用意されている集計関数 MAX() を使用できます。この記事では、実際にテーブルを作成し、データを挿入して、MAX()関数で最大値を取得する手順を具体的に解説します。1. テーブルの作成まず、サンプルとなるテーブルを作成します。mysql> create table DemoTable ( Id int ); Query OK, 0 rows affected (0.96 sec)2. レコードの挿入次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。mysql> insert into Demo