Команда ORDER BY
Команда ORDER BY позволяет
сортировать записи по определенному полю
при выборе из базы данных.
Синтаксис
Сортировка по одному полю:
SELECT * FROM table_name WHERE condition ORDER BY sort_field
Можно сортировать не по одному, а по многим полям сразу:
SELECT * FROM table_name WHERE condition ORDER BY field1, field2
По умолчанию записи сортируются по возрастанию,
чтобы отсортировать по убыванию - поставьте
DESC:
SELECT * FROM table_name WHERE condition ORDER BY field DESC
По умолчанию будет сортировка, будто поставлено
ASC:
SELECT * FROM table_name WHERE condition ORDER BY field ASC
Условие WHERE
не обязательно - если его не поставить, будут
выбраны все записи:
SELECT * FROM table_name ORDER BY field
Таблицы для примеров
| id | name | age | salary |
|---|---|---|---|
| 1 | user1 | 23 | 400 |
| 2 | user2 | 25 | 500 |
| 3 | user3 | 23 | 500 |
| 4 | user4 | 30 | 900 |
| 5 | user5 | 27 | 500 |
| 6 | user6 | 28 | 900 |
Пример
Давайте получим все записи из таблицы и отсортируем их по возрастанию возраста:
SELECT * FROM employees ORDER BY age
Результат выполнения кода:
| id | name | age | salary |
|---|---|---|---|
| 1 | user1 | 23 | 400 |
| 3 | user3 | 23 | 500 |
| 2 | user2 | 25 | 500 |
| 5 | user5 | 27 | 500 |
| 6 | user6 | 28 | 900 |
| 4 | user4 | 30 | 900 |
Пример
Давайте теперь отсортируем записи по убыванию возраста:
SELECT * FROM employees ORDER BY age DESC
Результат выполнения кода:
| id | name | age | salary |
|---|---|---|---|
| 4 | user4 | 30 | 900 |
| 6 | user6 | 28 | 900 |
| 5 | user5 | 27 | 500 |
| 2 | user2 | 25 | 500 |
| 1 | user1 | 23 | 400 |
| 3 | user3 | 23 | 500 |
Пример
Давайте теперь отсортируем записи одновременно по возрастанию возраста и по убыванию зарплаты.
SELECT * FROM employees ORDER BY age ASC, salary DESC
Результат выполнения кода:
| id | name | age | salary |
|---|---|---|---|
| 3 | user3 | 23 | 500 |
| 1 | user1 | 23 | 400 |
| 2 | user2 | 25 | 500 |
| 5 | user5 | 27 | 500 |
| 6 | user6 | 28 | 900 |
| 4 | user4 | 30 | 900 |
Пример
Давайте при тех же условиях отсортируем записи по возрастанию зарплаты:
SELECT * FROM employees ORDER BY age ASC, salary ASC
Результат выполнения кода:
| id | name | age | salary |
|---|---|---|---|
| 1 | user1 | 23 | 400 |
| 3 | user3 | 23 | 500 |
| 2 | user2 | 25 | 500 |
| 5 | user5 | 27 | 500 |
| 6 | user6 | 28 | 900 |
| 4 | user4 | 30 | 900 |
Смотрите также
-
команду
LIMIT,
которая ограничивает количество выбираемых записей