【MySQL】ORDER BY - 取得データのソート(並び替え)

【MySQL】ORDER BY - 取得データのソート(並び替え)

MySQLのORDER BYについて解説します。

検証環境

ORDER BY

ORDER BY句は“SELECT文の取得レコード(データ)を任意カラムで並び替える句”です。

基本構文

ORDER BY カラム [ ASC | DESC ]

カラムの部分に並び替えの基準とするカラム、[ ASC | DESC ]の部分に昇順はASC、降順はDESCを記述します。

並び替えるカラムが複数個ある場合は、カラム [ ASC | DESC ]の形式でカンマ(,)区切りにします。

※ 省略した場合はASC(昇順)が適用されます。

サンプル

mysql> SELECT * FROM items;
+----+-----------+-------+-------+
| id | name      | price | stock |
+----+-----------+-------+-------+
|  1 | Apple     |   200 |    10 |
|  2 | Orange    |   150 |     3 |
|  3 | Pineapple |  1100 |     3 |
|  4 | Grapes    |  3500 |     1 |
|  5 | Melon     |  3500 |     5 |
+----+-----------+-------+-------+
5 rows in set (0.00 sec)

mysql> SELECT * FROM items
    ___ih_hl_start
    -> ORDER BY price DESC;
    ___ih_hl_end
+----+-----------+-------+-------+
| id | name      | price | stock |
+----+-----------+-------+-------+
|  4 | Grapes    |  3500 |     1 |
|  5 | Melon     |  3500 |     5 |
|  3 | Pineapple |  1100 |     3 |
|  1 | Apple     |   200 |    10 |
|  2 | Orange    |   150 |     3 |
+----+-----------+-------+-------+
5 rows in set (0.00 sec)

14行目のORDER BY price DESCがORDER BY句です。

priceカラムの降順(DESC)でレコードを並び替えています。

また、ORDER BY句のカラムが複数個ある場合は次のようになります。

mysql> SELECT * FROM items 
    ___ih_hl_start
    -> ORDER BY price DESC, stock DESC;
    ___ih_hl_end
+----+-----------+-------+-------+
| id | name      | price | stock |
+----+-----------+-------+-------+
|  5 | Melon     |  3500 |     5 |
|  4 | Grapes    |  3500 |     1 |
|  3 | Pineapple |  1100 |     3 |
|  1 | Apple     |   200 |    10 |
|  2 | Orange    |   150 |     3 |
+----+-----------+-------+-------+
5 rows in set (0.00 sec)

2行目がORDER BY句ですが、並び替えのカラムにprice DESCstock DESCの2つがあります。

並び替えのカラムが複数個ある場合は、先頭から順番に並び替えの優先度が高くなります。

上記サンプルの優先度はpriceの降順(DESC)、次にpriceカラムの値が同じレコード同士はstockカラムの降順(DESC)です。