создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

Команда ORDER BY (сортировка записей по определенному полю при выборе из базы данных)

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

Синтаксис

Сортировка по 1 полю:

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 (code.mu/sql/where.html) не обязательно - если его не поставить, будут выбраны все записи:

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

Примеры

Все примеры будут по таблице workers.

idnameage-возрастsalary-зарплата
1Дима23400
2Петя25500
3Вася23500
4Коля301000
5Иван27500
6Кира281000

Давайте получим все записи из таблицы и отсортируем их по возрастанию возраста:

SELECT * FROM workers WHERE id>0 ORDER BY age

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

idnameage-возрастsalary-зарплата
1Дима23400
3Вася23500
2Петя25500
5Иван27500
6Кира281000
4Коля301000

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

SELECT * FROM workers ORDER BY age

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

SELECT * FROM workers ORDER BY age ASC

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

SELECT * FROM workers ORDER BY age DESC

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

idnameage-возрастsalary-зарплата
4Коля301000
6Кира281000
5Иван27500
2Петя25500
1Дима23400
3Вася23500

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

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

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

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

idnameage-возрастsalary-зарплата
3Вася23500
1Дима23400
2Петя25500
5Иван27500
6Кира281000
4Коля301000

Давайте при тех же условиях (т.е. сначала сортировка по возрасту) отсортируем по возрастанию зарплаты.

Теперь 1-я и 2-я запись поменяются местами так, чтобы сначала шла меньшая зарплата, а потом - бОльшая:

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

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

idnameage-возрастsalary-зарплата
1Дима23400
3Вася23500
2Петя25500
5Иван27500
6Кира281000
4Коля301000

code.mu/sql/order-by.html

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting