MySQLで一意の値(重複しない値)を取得する方法|DISTINCTキーワードの使い方
MySQLでカラム内の一意の値(重複を除いた値)を取得したい場合は、DISTINCTキーワードを使用します。DISTINCTを指定すると、指定したカラムに含まれる重複したデータが取り除かれ、ユニークな値だけが結果として返されます。
DISTINCTの基本構文
構文は以下の通りです。
SELECT DISTINCT カラム名 FROM テーブル名;
それでは、実際にサンプルテーブルを作成しながら動作を確認していきましょう。
サンプルテーブルの作成
まず、以下のクエリでテーブルを作成します。
mysql> create table selectUniqueValue
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20),
-> Age int
-> );
Query OK, 0 rows affected (0.64 sec)
このテーブルは、「Id」「Name」「Age」の3つのカラムを持ちます。Idは自動採番される主キーです。
次に、INSERTコマンドを使ってレコードを挿入します。
mysql> insert into selectUniqueValue(Name,Age) values('John',21);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Carol',21);
Query OK, 1 row affected (0.13 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Sam',22);
Query OK, 1 row affected (0.10 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Mike',22);
Query OK, 1 row affected (0.16 sec)
mysql> insert into selectUniqueValue(Name,Age) values('David',22);
Query OK, 1 row affected (0.13 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Larry',23);
Query OK, 1 row affected (0.12 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Bob',23);
Query OK, 1 row affected (0.12 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Maxwell',22);
Query OK, 1 row affected (0.19 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Robert',21);
Query OK, 1 row affected (0.15 sec)SELECT文ですべてのレコードを表示して確認してみましょう。
mysql> select *from selectUniqueValue;
実行結果は以下の通りです。
+----+---------+------+
| Id | Name | Age |
+----+---------+------+
| 1 | John | 21 |
| 2 | Carol | 21 |
| 3 | Sam | 22 |
| 4 | Mike | 22 |
| 5 | David | 22 |
| 6 | Larry | 23 |
| 7 | Bob | 23 |
| 8 | Maxwell | 22 |
| 9 | Robert | 21 |
+----+---------+------+
9 rows in set (0.00 sec)
「Age」カラムには21〜23の値が重複して登録されていることがわかります。
DISTINCTで一意の値を取得する
ここで、一意の値を取得するためのクエリを実行します。
mysql> select distinct Age from selectUniqueValue;
実行結果は以下の通りです。
+------+
| Age |
+------+
| 21 |
| 22 |
| 23 |
+------+
3 rows in set (0.00 sec)
重複していた「Age」の値が除外され、21・22・23という3つの一意な値だけが取得できました。
まとめ
MySQLで重複しない値を取得するには、SELECT文にDISTINCTキーワードを付けるだけで簡単に実現できます。複数カラムを指定することも可能で、その場合は指定したすべてのカラムの組み合わせが一意となる行が返されます。データの集計や分析の際に非常に便利な機能なので、ぜひ活用してください。
-
MySQLのSELECT 1で値の存在を確認する方法をわかりやすく解説
MySQLでSELECT 1を使った値の存在確認とは MySQLでは、SELECT 1を使用することで、テーブル内に特定の値が存在するかどうかをシンプルかつ効率的に確認できます。存在チェックには実際の列データを取得する必要がないため、以下のような構文を用いるのが基本です。 select 1 from yourTableName where yourColumnName=yourValue; このクエリが「1」を返した場合、その値はMySQLデータベース内に存在することを意味します。逆に、条件に一致する行がなければ何も返されません。SELECT *と異なり不要な列データを取得しないため、単純な存
-
MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)
MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599 -> ( -> Shippingdate d