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