Команда ORDER BY

Команда ORDER BY позволяет сортировать записи по определенному полю при выборе из базы данных.

Синтаксис

Сортировка по одному полю:

SELECT * FROM имя_таблицы WHERE условие ORDER BY поле_для_сортировки

Можно сортировать не по одному, а по многим полям сразу:

SELECT * FROM имя_таблицы WHERE условие ORDER BY поле1, поле2...

По умолчанию записи сортируются по возрастанию, чтобы отсортировать по убыванию - поставьте DESC:

SELECT * FROM имя_таблицы WHERE условие ORDER BY поле DESC

По умолчанию будет сортировка, будто поставлено ASC:

SELECT * FROM имя_таблицы WHERE условие ORDER BY поле ASC

Условие WHERE не обязательно - если его не поставить, будут выбраны все записи:

SELECT * FROM имя_таблицы ORDER BY поле

Таблицы для примеров

таблица employees
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 WHERE id>0 ORDER BY age

SQL запрос выберет строки в следующем порядке:

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

Так как выбираются все записи, то блок WHERE можно не указывать:

SELECT * FROM employees ORDER BY age

Можно также указать тип сортировки в явном виде - ASC - результат от этого не изменится:

SELECT * FROM employees ORDER BY age ASC

Пример

Давайте теперь отсортируем записи по убыванию возраста:

SELECT * FROM employees ORDER BY age DESC

SQL запрос выберет строки в следующем порядке:

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

Пример

Давайте теперь отсортируем записи одновременно по возрастанию возраста и по убыванию зарплаты.

При этом записи сначала будут сортироваться по возрасту, а те записи, в которых возраст одинаковый (в нашем случае - 23), будут располагаться по убыванию зарплаты:

SELECT * FROM employees WHERE id>0 ORDER BY age ASC, salary DESC

SQL запрос выберет строки в следующем порядке:

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 WHERE id>0 ORDER BY age ASC, salary DESC

SQL запрос выберет строки в следующем порядке:

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,
    которая ограничивает количество выбираемых записей