理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

重複レコードを除去する DISTINCT

重複するレコードを表示しないためには,SELECT に DISTINCT を指定する.

mysql> SELECT DISTINCT cust_id FROM account;
+---------+
| cust_id |
+---------+
|       1 |
|       2 |
|       3 |
|       4 |
|       5 |
|       6 |
|       7 |
|       8 |
|       9 |
|      10 |
|      11 |
|      12 |
|      13 |
+---------+
13 rows in set (0.01 sec)

DISTINCT の逆 (重複であっても表示する) は ALL による指定.ただし,ALL はデフォルトの動作であるため,普通は指定しない.なんで ALL がデフォルトであるかは,DISTINCT 指定をするとソーティングが必要になるため.ソーティングは決して軽い処理ではないというわけかな.

mysql> SELECT ALL cust_id from account;
+---------+
| cust_id |
+---------+
|       1 |
|       1 |
|       1 |
|       2 |
|       2 |
|       3 |
|       3 |
|       4 |
|       4 |
|       4 |
|       5 |
|       6 |
|       6 |
|       7 |
|       8 |
|       8 |
|       9 |
|       9 |
|       9 |
|      10 |
|      10 |
|      11 |
|      12 |
|      13 |
+---------+
24 rows in set (0.00 sec)