テーブルから特定のフィールドだけを取り出した場合、レコードの内容が重複することがある。
多くの場合、重複は取り除いて、一意なレコードだけにまとめたいことがほとんどである。
今回は、SELECT命令で取り出したレコードから重複行を取り除く、DISTINCTというキーワードをご紹介しよう。
まずは、mysqlクライアントを起動しよう。
PS C:\Users\vinta> mysql -u root -p
Enter password: *****
続いて、basicデータベースに移動しよう。
USE basic;
Database changed
レコードを抽出する(重複あり)
scheduleテーブルに登録しているuidフィールドの一覧を表示しよう。
以下の通り入力しよう。
SELECT uid FROM schedule;
下記の通り、scheduleテーブルに登録しているuidフィールドの一覧が表示される。
mysql> SELECT uid FROM schedule;
+---------+
| uid |
+---------+
| yyamada |
| tsato |
| yyamada |
| yyamada |
| nkaneya |
| nkaneya |
| ssuzuki |
+---------+
7 rows in set (0.00 sec)
レコードを抽出する(重複なし)
mysql> SELECT DISTINCT uid FROM schedule;
以下の通り表示される。
mysql> SELECT DISTINCT uid FROM schedule;
+---------+
| uid |
+---------+
| yyamada |
| tsato |
| nkaneya |
| ssuzuki |
+---------+
4 rows in set (0.01 sec)
レコードを抽出する(複数列)
scheduleテーブルに登録しているuidフィールドとuidフィールドの一覧を重複なしで表示しよう。
以下の通り入力しよう。
mysql> SELECT DISTINCT uid,cid FROM schedule;
以下の通り表示される。
mysql> SELECT DISTINCT uid,cid FROM schedule;
+---------+------+
| uid | cid |
+---------+------+
| yyamada | 1 |
| tsato | 3 |
| nkaneya | 2 |
| ssuzuki | 2 |
+---------+------+
4 rows in set (0.00 sec)
レコードを抽出する(ALLキーワード)
scheduleテーブルに登録しているuidフィールドの一覧を表示しよう。
以下の通り入力しよう。
mysql> SELECT ALL uid FROM schedule;
以下の通り表示される。
mysql> SELECT ALL uid FROM schedule;
+---------+
| uid |
+---------+
| yyamada |
| tsato |
| yyamada |
| yyamada |
| nkaneya |
| nkaneya |
| ssuzuki |
+---------+
7 rows in set (0.00 sec)
今回は、ここまでである。mysqlクライアントを終了しよう。
mysql> exit
Bye
PS C:\Users\vinta>
(参考)3ステップでしっかり学ぶ MySQL入門 [改訂第3版] 山田奈美(著)山田祥寛(監修)技術評論社
コメント