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