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