これまでの例では、クエリから返されたレコードは順不同で表示されています。レコードの表示順序に何らかの意味があれば、クエリの出力を調べるのが簡単になる場合がよくあります。クエリの結果をソートするには、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 カラムのソート順序には影響しません。















