Ознакомление с оператором ORDER BY в MySQL
В сегодняшнем уроке мы рассмотрим на практике то, как сортировать результаты выборки из базы данных с помощью оператора ORDER BY
в MySQL.
Основы оператора ORDER BY в MySQL
Когда вы используете инструкцию SELECT для запроса данных из таблицы, результирующий набор не сортируется. Это означает, что строки в наборе результатов могут быть в любом порядке.
Чтобы отсортировать набор результатов, вам нужно добавлять условие ORDER BY
в инструкцию SELECT
. Ниже показан синтаксис условия ORDER BY
:
SELECT select_query FROM table_name ORDER BY column_name_1 [ASC|DESC], column_name_2 [ASC|DESC], ...;
В этом синтаксисе вы указываете один или несколько столбцов, которые вы хотите отсортировать после условия ORDER BY
.
ASC
означает сортировка набора результатов по возрастанию, а DESC
– сортировка набора результатов по убыванию.
Это условие ORDER BY
сортирует результирующий набор в порядке возрастания:
ORDER BY column_name_1 ASC;
А это условие ORDER BY
сортирует набор результатов в порядке убывания:
ORDER BY column_name_1 DESC;
По умолчанию в условии ORDER BY
используется ASC
, если вы явно не указали какую-либо опцию.
Следовательно, следующие примеры эквивалентны:
ORDER BY column_name_1 ASC; и ORDER BY column_name_1;
Если вы хотите отсортировать результирующий набор по нескольким столбцам, укажите разделенный запятыми список столбцов в условии ORDER BY
:
ORDER BY column_name_1, column_name_2;
Можно отсортировать результат по одному столбцу в порядке возрастания, а по другому столбцу в порядке убывания:
ORDER BY column_name_1 ASC, column_name_2 DESC;
В этом случае условие ORDER BY
:
- Сначала отсортирует набор результатов по значениям в
column_name_1
в порядке возрастания. - Затем отсортирует отсортированный результат по значениям в
column_name_2
в порядке убывания. Обратите внимание, что на этом шаге порядок значений вcolumn_name_1
не изменится, меняется только порядок значений вcolumn_name_2
.
Обратите внимание, что условие ORDER BY
всегда выполняется после условий FROM
і SELECT
.
Примеры выражений оператора ORDER BY в MySQL
Пример №1: Использование условия ORDER BY для сортировки в одном столбце
В следующем запросе используется условие ORDER BY
для сортировки автомобилей по значениям в столбце carYear
в порядке возрастания.
SELECT carYear, carBrand FROM cars ORDER BY carYear;
Если вы хотите отсортировать автомобили по году выпуска в порядке убывания, используйте DESC
после столбца carYear
в предложении ORDER BY
, как показано в следующем запросе:
SELECT carYear, carBrand FROM cars ORDER BY carYear DESC;
Пример №2: Использование условия ORDER BY для сортировки значений в нескольких столбцах
Если вы хотите отсортировать автомобили по году выпуска в порядке убывания, а затем по бренду (марке) в порядке возрастания, в соответствующем столбце укажите DESC
и ASC
следующим образом:
SELECT carYear, carBrand FROM cars ORDER BY carYear DESC, carBrand ASC;
В этом примере условие ORDER BY
сортирует результирующий набор по году выпуска автомобиля в порядке убывания, а затем сортирует результирующий набор по марке автомобиля в порядке возрастания, чтобы получить окончательный набор результатов.
Пример №3: Условие ORDER BY для сортировки с использованием выражения
Следующий запрос выбирает данные заказа из таблицы orderDetails
. Он рассчитывает промежуточный итог для каждой отдельной позиции и сортирует результирующий набор на основе промежуточного итога.
SELECT orderNumber, orderQuantity * eachPrice FROM orderDetails ORDER BY orderQuantity * eachPrice DESC;
Из сегодняшнего урока вы узнали, как использовать условие ORDER BY
в MySQL для сортировки строк в наборе результатов по одному или нескольким столбцам в порядке возрастания или убывания.