MySQL 8.0 リファレンスマニュアル


3.3.4.4 行のソート

前の例で、結果の行の表示には特定の順序がないことに気付いたでしょう。 多くの場合、クエリーの出力は、行を何らかの意味のある順序でソートすると確認しやすくなります。 結果をソートするには、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 カラムのソート順序には影響を与えません。


関連キーワード:  ソート, カラム, リファレンス, テーブル, 順序, マニュアル, 特定, ORDER, 情報, クエリー