準備
以下のテーブルで確認する。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql> SELECT * FROM test_order; +------+------+ | num1 | num2 | +------+------+ | 1 | 10 | | 1 | 20 | | 1 | 30 | | 2 | 10 | | 2 | 20 | | 2 | 30 | | 3 | 10 | | 3 | 20 | | 3 | 30 | +------+------+ 9 rows in set (0.00 sec) |
指定方法
ORDER BYで指定したカラムをキーにして並べ替える。デフォルトは昇順でASCを指定したのと同じ。
SELECT カラム群 FROM テーブル ORDER BY カラム [ASC/DESC];
以下の例では、2つ目のnum2で昇順にソートしている。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql> SELECT * FROM test_order ORDER BY num2; +------+------+ | num1 | num2 | +------+------+ | 1 | 10 | | 2 | 10 | | 3 | 10 | | 1 | 20 | | 2 | 20 | | 3 | 20 | | 1 | 30 | | 2 | 30 | | 3 | 30 | +------+------+ 9 rows in set (0.00 sec) |
降順でソートする場合はDESCを指定。以下はnum2カラムの内容で降順にソートしている。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql> SELECT * FROM test_order ORDER BY num2 DESC; +------+------+ | num1 | num2 | +------+------+ | 1 | 30 | | 2 | 30 | | 3 | 30 | | 1 | 20 | | 2 | 20 | | 3 | 20 | | 1 | 10 | | 2 | 10 | | 3 | 10 | +------+------+ 9 rows in set (0.00 sec) |
複数カラムでのソート
ORDER BYで複数カラムを指定すると、指定したカラムの順でネストの外側のようにしてソートする。
以下の例では、num1で降順ソートし、その中でnum2で降順ソートしている。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql> SELECT * FROM test_order ORDER BY num1 DESC, num2 DESC; +------+------+ | num1 | num2 | +------+------+ | 3 | 30 | | 3 | 20 | | 3 | 10 | | 2 | 30 | | 2 | 20 | | 2 | 10 | | 1 | 30 | | 1 | 20 | | 1 | 10 | +------+------+ 9 rows in set (0.00 sec) |
順番を入れ替えた例。まずnum2で降順ソートしてから、その中でnum1でソートしている。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql> SELECT * FROM test_order ORDER BY num2 DESC, num1 DESC; +------+------+ | num1 | num2 | +------+------+ | 3 | 30 | | 2 | 30 | | 1 | 30 | | 3 | 20 | | 2 | 20 | | 1 | 20 | | 3 | 10 | | 2 | 10 | | 1 | 10 | +------+------+ 9 rows in set (0.00 sec) |