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

MySQLで重複する列の値を1回だけ返す方法(DISTINCT句の使い方)

MySQLで重複する値を1回だけ取得するには?

MySQLでテーブル内の重複する列の値を1回だけ返したい場合は、DISTINCT句を使用します。本記事では、実際にサンプルテーブルを作成し、DISTINCT句の基本的な使い方を順を追って解説します。

サンプルテーブルの作成

まず、例として以下のようなテーブルを作成します。

mysql> create table DemoTable680(Status varchar(100));
Query OK, 0 rows affected (0.75 sec)

レコードの挿入

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。ここでは意図的に「Busy」「Offline」「Blocked」など重複する値を含めています。

mysql> insert into DemoTable680 values('Busy');
Query OK, 1 row affected (0.36 sec)
mysql> insert into DemoTable680 values('At Work');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable680 values('Busy');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable680 values('Blocked');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable680 values('Offline');
Query OK, 1 row affected (0.67 sec)
mysql> insert into DemoTable680 values('Offline');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable680 values('Blocked');
Query OK, 1 row affected (0.14 sec)

テーブルの全レコードを確認する

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

mysql> select *from DemoTable680;

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

+---------+
| Status |
+---------+
| Busy |
| At Work |
| Busy |
| Blocked |
| Offline |
| Offline |
| Blocked |
+---------+
7 rows in set (0.00 sec)

このように、同じ値が複数回登録されていることが確認できます。

DISTINCT句で重複を除外する

重複する列の値を1回だけ返すには、以下のようにSELECT文にDISTINCT句を指定します。さらにORDER BY句を組み合わせることで、結果を昇順に並べ替えることもできます。

mysql> select distinct Status from DemoTable680 order by Status;

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

+---------+
| Status |
+---------+
| At Work |
| Blocked |
| Busy |
| Offline |
+---------+
4 rows in set (0.00 sec)

重複が取り除かれ、それぞれの値が1回だけ表示されていることがわかります。

まとめ

MySQLで重複する列の値を1回だけ取得したい場合は、SELECT文にDISTINCT句を付けるだけで簡単に実現できます。ORDER BY句と組み合わせれば、重複を除いた結果を任意の順序で並べ替えることも可能です。データの集計や選択肢の一覧表示など、さまざまな場面で活用できる基本テクニックなので、ぜひ覚えておきましょう。

  1. MySQLでテーブル列の重複値の数をカウントするクエリの書き方

    MySQLでは、GROUP BY句とHAVING句を組み合わせることで、テーブルの特定の列に含まれる重複値の数を簡単にカウントできます。この記事では、実際にサンプルテーブルを作成し、重複しているデータの件数を取得する手順を解説します。 1. サンプルテーブルの作成 まず、以下のCREATE TABLE文を使ってテーブルを作成します。 mysql> create table DemoTable( Data int ); Query OK, 0 rows affected (0.98 sec) 2. テーブルへのレコード挿入 次に、INSERT文を使用してサンプルレコードを挿入

  2. MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方

    MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829      (      Name varchar(