ORDER BY. Сортировка данных в таблице БД MySQL

Команда ORDER BY

ORDER BY позволяет сортировать записи по одной или нескольким колонкам.

Сортировка возможна в восходящем или нисходящем порядке с помощью ключевых слов ASC и DESC

По умолчанию используется восходящий порядок сортировки (ASC).

Синтаксис ORDER BY

mysql> SELECT column1, column2, ... , columnN
    -> FROM table_name
    -> ORDER BY column1, column2, ... , columnN ASC|DESC

Рассмотрим несколько примеров сортировки в таблице books из базы данных Bookstore.

Подключимся к базе данных.

Выведем записи таблицы books отсортированные по цене.

mysql> SELECT id, title, author, price
    -> FROM books
    -> ORDER BY price;
+----+---------------------------+--------------------+--------+
| id | title                     | author             | price  |
+----+---------------------------+--------------------+--------+
|  4 | Мёртвые души (Акция)      | Николай Гоголь     | 173.00 |
| 10 | Бесы                      | Фёдор Достоевский  | 212.00 |
|  1 | Дубровский (Акция)        | Александр Пушкин   | 230.00 |
|  9 | Собачье сердце            | Михаил Булгаков    | 232.00 |
|  5 | Преступление и наказание  | Фёдор Достоевский  | 245.00 |
|  2 | Нос (Акция)               | Николай Гоголь     | 255.20 |
|  3 | Мастер и Маргарита        | Михаил Булгаков    | 263.00 |
|  6 | Война и мир               | Лев Толстой        | 341.00 |
|  7 | Анна Каренина             | Лев Толстой        | 346.00 |
|  8 | Отцы и дети               | Иван Тургенев      | 371.00 |
+----+---------------------------+--------------------+--------+
10 rows in set (0.00 sec)

Если нужно отсортировать в нисходящем порядке, то добавим ключевое слово DESC.

mysql> SELECT id, title, author, price
    -> FROM books
    -> ORDER BY price DESC;
+----+---------------------------+--------------------+--------+
| id | title                     | author             | price  |
+----+---------------------------+--------------------+--------+
|  8 | Отцы и дети               | Иван Тургенев      | 371.00 |
|  7 | Анна Каренина             | Лев Толстой        | 346.00 |
|  6 | Война и мир               | Лев Толстой        | 341.00 |
|  3 | Мастер и Маргарита        | Михаил Булгаков    | 263.00 |
|  2 | Нос (Акция)               | Николай Гоголь     | 255.20 |
|  5 | Преступление и наказание  | Фёдор Достоевский  | 245.00 |
|  9 | Собачье сердце            | Михаил Булгаков    | 232.00 |
|  1 | Дубровский (Акция)        | Александр Пушкин   | 230.00 |
| 10 | Бесы                      | Фёдор Достоевский  | 212.00 |
|  4 | Мёртвые души (Акция)      | Николай Гоголь     | 173.00 |
+----+---------------------------+--------------------+--------+
10 rows in set (0.00 sec)

Важно заметить, что сортировка по второй колонке будет работать, только тогда когда в первой колонке есть повторяющиеся значения. Если в первой колонке все значения уникальны, то вторая колонка не будет отсортирована, иначе будет нарушена целостность таблицы.

Выведем записи отсортированные по двум колонкам author и price.

mysql> SELECT id, title, author, price
    -> FROM books
    -> ORDER BY author, price DESC;
+----+---------------------------+--------------------+--------+
| id | title                     | author             | price  |
+----+---------------------------+--------------------+--------+
|  1 | Дубровский (Акция)        | Александр Пушкин   | 230.00 |
|  8 | Отцы и дети               | Иван Тургенев      | 371.00 |
|  7 | Анна Каренина             | Лев Толстой        | 346.00 |
|  6 | Война и мир               | Лев Толстой        | 341.00 |
|  3 | Мастер и Маргарита        | Михаил Булгаков    | 263.00 |
|  9 | Собачье сердце            | Михаил Булгаков    | 232.00 |
|  2 | Нос (Акция)               | Николай Гоголь     | 255.20 |
|  4 | Мёртвые души (Акция)      | Николай Гоголь     | 173.00 |
|  5 | Преступление и наказание  | Фёдор Достоевский  | 245.00 |
| 10 | Бесы                      | Фёдор Достоевский  | 212.00 |
+----+---------------------------+--------------------+--------+
10 rows in set (0.00 sec)

Сортировка данных таблицы MySQL с помощью PHP (PDO)

Создадим файл index.php, в котором отобразим форму с выбором вида сортировки, по типу тех, что делают в интернет-магазинах и выведем саму таблицу со значениями из базы данных.

Каждый раз когда пользователь будет менять вид сортировки, страница будет перезагружаться.

После вызова страницы index.php получим полностью рабочую сортировку с помощью HTML-формы.

Сортировка записей с помощью HTML-формы
Сортировка записей с помощью HTML-формы