MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで特定の文字で始まるレコードをカウントする方法|SUBSTRINGとGROUP BYの活用例

MySQLでは、SUBSTRING()関数とGROUP BY句を組み合わせることで、「特定の文字で始まるレコード」を簡単にカウントできます。この記事では、サンプルテーブルを作成し、名前の先頭2文字ごとにレコード数を集計する手順をわかりやすく解説します。

テーブルの作成

まず、テーブルを作成します。

mysql> create table DemoTable775 (
FirstName varchar(100)
);
Query OK, 0 rows affected (0.78 sec)

レコードの挿入

次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。

mysql> insert into DemoTable775 values('Adam');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable775 values('Carol');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable775 values('John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable775 values('Sam');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable775 values('Adan');
Query OK, 1 row affected (0.15 sec)

登録済みレコードの確認

SELECT文でテーブル内の全レコードを表示してみましょう。

mysql> select *from DemoTable775;

このクエリを実行すると、次のような出力が得られます。

+-----------+
| FirstName |
+-----------+
| Adam      |
| Carol     |
| John      |
| Sam       |
| Adan      |
+-----------+
5 rows in set (0.00 sec)

特定の文字で始まるレコードをカウントするクエリ

ここでは、SUBSTRING(FirstName,1,2)で名前の先頭2文字を抽出し、それをGROUP BYでグループ化することで、同じ先頭文字を持つレコードの件数をCOUNT(*)で集計しています。

mysql> select count(*),substring(FirstName,1,2) from DemoTable775 group by substring(FirstName,1,2);

実行結果は以下のとおりです。

+----------+--------------------------+
| count(*) | substring(FirstName,1,2) |
+----------+--------------------------+
| 2        | Ad                       |
| 1        | Ca                       |
| 1        | Jo                       |
| 1        | Sa                       |
+----------+--------------------------+
4 rows in set (0.00 sec)

この結果から、「Ad」で始まるレコードが2件(Adam・Adan)、「Ca」「Jo」「Sa」で始まるレコードがそれぞれ1件存在することがひと目でわかります。

補足:LIKE演算子を使う方法

「特定の文字列で始まるレコードの総数だけを知りたい」という場合は、WHERE句とLIKE演算子を使うのがよりシンプルです。

mysql> select count(*) from DemoTable775 where FirstName like 'Ad%';

このクエリでは、先頭が「Ad」で始まるレコードの件数である「2」が返されます。用途に応じて、GROUP BYでのグループ別集計とLIKEによる絞り込み検査を使い分けるとよいでしょう。

  1. 【MySQL】STR_TO_DATEを使って異なる形式の日付から特定日以降のレコードを取得する方法

    はじめにデータベースの運用では、日付が「21/11/2019」のような文字列形式(DD/MM/YYYY)で保存されているケースによく出会います。このような場合、UNIX_TIMESTAMP() の代わりに STR_TO_DATE() 関数を使うことで、文字列の日付を正しく変換し、特定の日付以降のレコードを簡単に抽出できます。本記事では、実際のSQL例を使いながら、その手順をわかりやすく解説します。1. サンプルテーブルの作成まず、日付をvarchar型で保持するテーブルを作成します。mysql> create table DemoTable1808 ( Admission

  2. MySQLのDELETE文とIN句を組み合わせて1つのクエリで複数レコードを削除する方法

    MySQLでは、IN()句を活用することで、複数の条件値に一致するレコードを1つのDELETEクエリでまとめて削除できます。個別に削除クエリを実行する必要がなく、効率的なデータ操作が可能になります。ここでは、サンプルテーブルを作成し、実際にIN()句を使ったレコード削除の手順を解説します。1. サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable1922 ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(20)