MySQLでBIGINT型の電話番号列から一意な電話番号の数を取得する方法
MySQLで電話番号の重複を除いた件数(一意な電話番号の数)を取得するには、COUNT()関数とDISTINCTキーワードを組み合わせます。COUNT()はレコード数を数えるための関数であり、DISTINCTを併用することで、重複を排除した一意なレコードだけを対象にカウントできます。
この記事では、実際にテーブルを作成し、データを挿入して、一意な電話番号の件数を取得するまでの手順を具体的なSQL例とともに解説します。
1. サンプルテーブルを作成する
まず、BIGINT型の電話番号列を持つテーブルを作成します。
mysql> create table DemoTable
(
PhoneNumber bigint
);
Query OK, 0 rows affected (1.29 sec)2. テストデータを挿入する
INSERTコマンドを使って、意図的に重複を含む複数の電話番号を挿入します。
mysql> insert into DemoTable values(8567789898); Query OK, 1 row affected (0.94 sec) mysql> insert into DemoTable values(8567789898); Query OK, 1 row affected (0.34 sec) mysql> insert into DemoTable values(9876564534); Query OK, 1 row affected (0.43 sec) mysql> insert into DemoTable values(9087896545); Query OK, 1 row affected (0.28 sec) mysql> insert into DemoTable values(7656456589); Query OK, 1 row affected (0.21 sec) mysql> insert into DemoTable values(9876564534); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(9087896545); Query OK, 1 row affected (0.18 sec)
この時点で、テーブルには7件のレコードが登録されていますが、そのうち重複を除くと4種類の電話番号が存在します。
3. テーブルの内容を確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-------------+ | PhoneNumber | +-------------+ | 8567789898 | | 8567789898 | | 9876564534 | | 9087896545 | | 7656456589 | | 9876564534 | | 9087896545 | +-------------+ 7 rows in set (0.00 sec)
同じ電話番号が複数回登録されていることが確認できます。
4. 一意な電話番号の数を取得する
一意な電話番号の件数を取得するには、次のようにCOUNT(DISTINCT 列名)を使用します。AS句でエイリアスを指定すると、結果の列名がわかりやすくなります。
mysql> select count(distinct PhoneNumber) AS UniquePhoneNumber from DemoTable;
実行結果は以下の通りです。
+-------------------+ | UniquePhoneNumber | +-------------------+ | 4 | +-------------------+ 1 row in set (0.00 sec)
7件のレコードから重複が排除され、一意な電話番号は4件であることが確認できました。
まとめ
COUNT()はレコード数を数える集計関数です。DISTINCTを組み合わせることで、重複を除外した一意な値のみをカウントできます。AS句を使うと、結果セットの列名を見やすくできます。
電話番号に限らず、メールアドレスやユーザーIDなど、重複を排除した件数を集計したい場面で広く応用できるテクニックなので、ぜひ覚えておきましょう。
-
MySQLでファイル名が格納された列からファイル拡張子のみを取得する方法
MySQLで「AddTwoNumber.java」や「vector.cpp」のようなファイル名が文字列として保存されている列から、拡張子の部分だけを取り出したいケースはよくあります。このような場合には、substring_index() 関数を使用するのが最も簡単な方法です。substring_index()関数の構文substring_index() 関数は、指定した区切り文字を基準に文字列を分割し、その一部を取得できる関数です。第3引数に -1 を指定すると、区切り文字より後ろ側(右端)の部分文字列を返します。つまり、ドット(.)を区切り文字にすれば、ファイル名の末尾にある拡張子だけを抜き
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI