Ознакомление с оператором 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 для сортировки строк в наборе результатов по одному или нескольким столбцам в порядке возрастания или убывания.