前の例で、結果の行の表示には特定の順序がないことに気付いたでしょう。多くの場合、クエリーの出力を何らかの意味のある順序でソートすると確認しやすくなります。結果をソートするには、ORDER
BY
節を使用します。
次に、ペットの誕生日を日付でソートしたものを示します。
mysql> SELECT name, birth FROM pet ORDER BY birth;
+----------+------------+
| name | birth |
+----------+------------+
| Buffy | 1989-05-13 |
| Bowser | 1989-08-31 |
| Fang | 1990-08-27 |
| Fluffy | 1993-02-04 |
| Claws | 1994-03-17 |
| Slim | 1996-04-29 |
| Whistler | 1997-12-09 |
| Chirpy | 1998-09-11 |
| Puffball | 1999-03-30 |
+----------+------------+
文字型のカラムのソートは、ほかのすべての比較演算と同様に、通常は大文字と小文字を区別せずに実行されます。したがって、大文字と小文字の違いしかないカラムの場合、順序は未定義になります。ソートで大文字と小文字を区別するには、BINARY
を使用し、ORDER BY BINARY
のように指定します。
col_name
デフォルトのソート順序は昇順で、最小値が最初になります。逆順
(降順)
でソートするには、ソートするカラムの名前に
DESC
キーワードを加えてください。
mysql> SELECT name, birth FROM pet ORDER BY birth DESC;
+----------+------------+
| name | birth |
+----------+------------+
| Puffball | 1999-03-30 |
| Chirpy | 1998-09-11 |
| Whistler | 1997-12-09 |
| Slim | 1996-04-29 |
| Claws | 1994-03-17 |
| Fluffy | 1993-02-04 |
| Fang | 1990-08-27 |
| Bowser | 1989-08-31 |
| Buffy | 1989-05-13 |
+----------+------------+
複数のカラムをソートでき、ソートの方向はカラムごとに変えることができます。たとえば、ペットの種類で昇順にソートしてから、同じ種類の中では誕生日で降順に (若い順に) ソートするには、次のクエリーを使用します。
mysql>SELECT name, species, birth FROM pet
->ORDER BY species, birth DESC;
+----------+---------+------------+ | name | species | birth | +----------+---------+------------+ | Chirpy | bird | 1998-09-11 | | Whistler | bird | 1997-12-09 | | Claws | cat | 1994-03-17 | | Fluffy | cat | 1993-02-04 | | Fang | dog | 1990-08-27 | | Bowser | dog | 1989-08-31 | | Buffy | dog | 1989-05-13 | | Puffball | hamster | 1999-03-30 | | Slim | snake | 1996-04-29 | +----------+---------+------------+
DESC
キーワードはその直前のカラム名
(birth
)
だけに適用されます。species
カラムのソート順序には影響を与えません。