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句と組み合わせれば、重複を除いた結果を任意の順序で並べ替えることも可能です。データの集計や選択肢の一覧表示など、さまざまな場面で活用できる基本テクニックなので、ぜひ覚えておきましょう。
-
MySQLでテーブル列の重複値の数をカウントするクエリの書き方
MySQLでは、GROUP BY句とHAVING句を組み合わせることで、テーブルの特定の列に含まれる重複値の数を簡単にカウントできます。この記事では、実際にサンプルテーブルを作成し、重複しているデータの件数を取得する手順を解説します。 1. サンプルテーブルの作成 まず、以下のCREATE TABLE文を使ってテーブルを作成します。 mysql> create table DemoTable( Data int ); Query OK, 0 rows affected (0.98 sec) 2. テーブルへのレコード挿入 次に、INSERT文を使用してサンプルレコードを挿入
-
MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方
MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829 ( Name varchar(