SQLのasc指定についてまとめています。
以下、サンプルデータベースとしてEmployeesを、MySQLのバージョンは8.0.18を前提としています。
SQLのascサンプルコード
ascは、抽出結果の並び替えを行うorder byで昇順(小さい順に並べる)を指定します。
mysql> select * from employees order by emp_no asc limit 10; +--------+------------+------------+-----------+--------+------------+ | emp_no | birth_date | first_name | last_name | gender | hire_date | +--------+------------+------------+-----------+--------+------------+ | 10001 | 1953-09-02 | Georgi | Facello | M | 1986-06-26 | | 10002 | 1964-06-02 | Bezalel | Simmel | F | 1985-11-21 | | 10003 | 1959-12-03 | Parto | Bamford | M | 1986-08-28 | | 10004 | 1954-05-01 | Chirstian | Koblick | M | 1986-12-01 | | 10005 | 1955-01-21 | Kyoichi | Maliniak | M | 1989-09-12 | | 10006 | 1953-04-20 | Anneke | Preusig | F | 1989-06-02 | | 10007 | 1957-05-23 | Tzvetan | Zielinski | F | 1989-02-10 | | 10008 | 1958-02-19 | Saniya | Kalloufi | M | 1994-09-15 | | 10009 | 1952-04-19 | Sumant | Peac | F | 1985-02-18 | | 10010 | 1963-06-01 | Duangkaew | Piveteau | F | 1989-08-24 | +--------+------------+------------+-----------+--------+------------+
ASCは省略可能です。SQL Server、Oracle、MySQL、ProgreSQLともorder by句でのASCは省略可能です。
以下、departments(部署)テーブルをdept_no(部署番号)で並び替えるサンプルです。order by指定にascをつけた場合と省略した場合とで、全く同じ結果が出力されています。
mysql> select * from departments order by dept_no; +---------+--------------------+ | dept_no | dept_name | +---------+--------------------+ | d001 | Marketing | | d002 | Finance | | d003 | Human Resources | | d004 | Production | | d005 | Development | | d006 | Quality Management | | d007 | Sales | | d008 | Research | | d009 | Customer Service | +---------+--------------------+ mysql> select * from departments order by dept_no asc; +---------+--------------------+ | dept_no | dept_name | +---------+--------------------+ | d001 | Marketing | | d002 | Finance | | d003 | Human Resources | | d004 | Production | | d005 | Development | | d006 | Quality Management | | d007 | Sales | | d008 | Research | | d009 | Customer Service | +---------+--------------------+
複数の並び替え条件を指定する
order byで複数カラムに並び替え条件を指定する場合は、以下のように指定します。この場合でも、ascは省略が可能です。
mysql> SELECT * FROM `employees` -> ORDER BY emp_no DESC, first_name, hire_date ASC limit 10; +--------+------------+------------+--------------+--------+------------+ | emp_no | birth_date | first_name | last_name | gender | hire_date | +--------+------------+------------+--------------+--------+------------+ | 499999 | 1958-05-01 | Sachin | Tsukuda | M | 1997-11-30 | | 499998 | 1956-09-05 | Patricia | Breugel | M | 1993-10-13 | | 499997 | 1961-08-03 | Berhard | Lenart | M | 1986-04-21 | | 499996 | 1953-03-07 | Zito | Baaz | M | 1990-09-27 | | 499995 | 1958-09-24 | Dekang | Lichtner | F | 1993-01-12 | | 499994 | 1952-02-26 | Navin | Argence | F | 1990-04-24 | | 499993 | 1963-06-04 | DeForest | Mullainathan | M | 1997-04-07 | | 499992 | 1960-10-12 | Siamak | Salverda | F | 1987-05-10 | | 499991 | 1962-02-26 | Pohua | Sichman | F | 1989-01-12 | | 499990 | 1963-11-03 | Khaled | Kohling | M | 1985-10-10 | +--------+------------+------------+--------------+--------+------------+
【関連記事】
▶SQL order byでソート指定するサンプルコード集 指定のレコードだけ先頭に並べるには?
まとめ
- order byのasc指定は昇順に並び替えを行う
- asc指定は、SQL Server、Oracle、MySQL、ProgreSQLなど主要データベースで省略可能
- order byで複数カラムを指定する場合、個別に並び替え条件が指定できる