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

MySQLで重複データを含む列から一意な値の件数を取得する方法

はじめに

MySQLでは、COUNT(DISTINCT 列名) を使うことで、重複する値を含む列から「重複を除いた一意な値の件数」を簡単に取得できます。この記事では、サンプルテーブルを作成しながら、具体的な手順と実行結果をわかりやすく解説します。

サンプルテーブルの作成

まず、以下のコマンドでテーブルを作成しましょう。

mysql> create table DemoTable
(
    StudentId int,
    StudentFirstName varchar(100)
);
Query OK, 0 rows affected (0.88 sec)

レコードの挿入

次に、INSERTコマンドでいくつかのレコードを挿入します。ここでは意図的に「John」と「Sam」を重複させて登録しています。

mysql> insert into DemoTable values(100,'John');
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values(101,'Chris');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(102,'John');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(103,'Sam');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(104,'Sam');
Query OK, 1 row affected (0.13 sec)

登録済みレコードの確認

SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行すると、以下のような出力が得られます。

+-----------+------------------+
| StudentId | StudentFirstName |
+-----------+------------------+
|       100 | John             |
|       101 | Chris            |
|       102 | John             |
|       103 | Sam              |
|       104 | Sam              |
+-----------+------------------+
5 rows in set (0.00 sec)

重複を除いた件数を取得するクエリ

重複レコードを含む列から一意なレコードの数を表示するには、COUNT(DISTINCT ...) を使用します。

mysql> select count(distinct StudentFirstName) from DemoTable;

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

+----------------------------------+
| count(distinct StudentFirstName) |
+----------------------------------+
|                                3 |
+----------------------------------+
1 row in set (0.00 sec)

結果の解説

テーブルには合計5件のレコードが存在しますが、StudentFirstName列の値は「John」「Chris」「Sam」の3種類だけです。COUNT(DISTINCT StudentFirstName) は重複を除外してカウントするため、結果は「3」となります。

まとめ

COUNT(DISTINCT 列名) を使えば、列内の一意な値の件数を簡単に集計できます。なお、DISTINCTを付けた場合、NULL値はカウント対象外になる点にも注意してください。データ分析や集計処理、重複チェックなどの場面で非常に役立つ構文なので、ぜひ活用してみてください。

  1. MySQLで重複する値ごとのレコードを別の列に合計して表示する方法

    MySQLでは、重複している値(同じ名前など)を持つ複数のレコードの数値を、名前ごとにまとめて合計したいケースがあります。このような場合には、集計関数SUM()とGROUP BY句を組み合わせることで簡単に実現できます。本記事では、実際にサンプルテーブルを作成し、重複する値を持つレコードを別の列(合計列)として集計・表示する手順を解説します。1. サンプルテーブルを作成するまず、CREATE TABLE文を使ってテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(20), -> V

  2. MySQLで重複するタプルを検出してカウントを表示する方法

    MySQLで重複するタプル(同じ値の組み合わせを持つ行)を検出し、その出現回数を表示するには、GROUP BY句とHAVING句を組み合わせて使用します。この記事では、テーブルの作成から重複検出クエリの実行まで、手順を追って解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成します。 mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (0.80 sec) テストデータの挿入