Mysql сортировка по двум полям. Сортировка данных в SQL (ORDER BY). Сортировка выбранных данных

Сортировка данных в SQL (ORDER BY)

Mysql сортировка по двум полям. Сортировка данных в SQL (ORDER BY). Сортировка выбранных данных

При выборке данных бывает важно получить их в определенном упорядоченном виде. Сортировка может быть выполнена по любым полям с любым типом данных. Это может быть сортировка по возрастанию или убыванию для числовых полей.

Для символьных (текстовых) полей это может быть сортировка в алфавитном порядке, хотя по сути, она так же является сортировкой по возрастанию или убыванию.

Она так же может быть выполнена в любых направлениях – от А, до Я, и наоборот от Я, до А.

Суть процесса сортировки заключается к приведению последовательности к определенному порядку. Подробней о сортировки можно узнать в статье “Алгоритмы сортировки” Например, сортировка произвольной числовой последовательности по возрастанию:

2, 4, 1, 5, 9

должна привести к упорядоченной последовательности:

1, 2, 4, 5, 6

Аналогично, при сортировке по возрастанию строковых значений:

Иванов Иван, Петров Петр, Иванов Андрей

результат должен быть:

Иванов Андрей, Иванов Иван, Петров Петр

Здесь строка “Иванов Андрей” перешла в начало, так как сравнение строк производится посимвольно. Обе строки начинаются одинаковых символов “Иванов “. Так как символ “А” в слове “Андрей” идет раньше в алфавите, чем символ “И” в слове “Иван”, то эта строка будет поставлена раньше.

Сортировка в запросе SQL

Для выполнения сортировки в строку запроса нужно добавить команду ORDER BY. После этой команды указывается поле, по которому производится сортировка.

Для примеров используем таблицу товаров goods:

num(номер товара)title(название)price(цена)
1Мандарин50
2Арбуз120
3Ананас80
4Банан40

Данные здесь уже упорядочены по столбцу “num”. Теперь, построим запрос, который выведет таблицу с товарами, упорядоченными в алфавитном порядке:

SELECT FROM ORDER BY

SELECT * FROM goods – указывает выбрать все поля из таблицы goods;

ORDER BY – команда сортировки;

title – столбец, по которому будет выполняться сортировка.

Результат выполнения такого запроса следующий:

numtitleprice
3Ананас80
2Арбуз120
4Банан40
1Мандарин50

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

Направление сортировки

По умолчанию, команда ORDER BY выполняет сортировку по возрастанию. Чтобы управлять направлением сортировки вручную, после имени столбца указывается ключевое слово ASC (по возрастанию) или DESC (по убыванию). Таким образом, чтобы вывести нашу таблицу в порядке убывания цен, нужно задать запрос так:

SELECT FROM ORDER BY DESC

Сортировка по возрастанию цены будет:

SELECT FROM ORDER BY ASC

Сортировка по нескольким полям

SQL допускает сортировку сразу по нескольким полям. Для этого после команды ORDER BY необходимые поля указываются через запятую. Порядок в результате запроса будет настраиваться в той же очередности, в которой указаны поля сортировки.

column1column2column3
31c
13c
22b
21b
12a
13a
34a

Отсортируем таблицу по следующим правилам:

SELECT FROM ORDER BY ASC, DESC, ASC

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

column1column2column3
13a
13c
12a
22b
21b
31a
31c

Порядок команды ORDER BY в запросе

Сортировка строк чаще всего проводится вместе с условием на выборку данных. Команда ORDER BY ставится после условия выборки WHERE. Например, выбираем товары с ценой меньше 100 рублей, упорядочив по названию в алфавитном порядке:

SELECT FROM WHERE < ORDER BY ASC

Источник: https://space-base.ru/library/?book=75

Команда ORDER BY

Mysql сортировка по двум полям. Сортировка данных в SQL (ORDER BY). Сортировка выбранных данных

Команда ORDER BY позволяет сортировать записи по определенному полю при выборе из базы данных.

См. также команду LIMIT, которая ограничивает количество выбираемых записей.

Синтаксис

Сортировка по одному полю:

SELECT * FROM имя_таблицы WHERE условие ORDER BY поле_для_сортировки

Можно сортировать не по одному, а по многим полям сразу:

SELECT * FROM имя_таблицы WHERE условие ORDER BY поле1, поле2…

По умолчанию записи сортируются по возрастанию, чтобы отсортировать по убыванию – поставьте DESC:

SELECT * FROM имя_таблицы WHERE условие ORDER BY поле DESC

По умолчанию будет сортировка, будто поставлено ASC:

SELECT * FROM имя_таблицы WHERE условие ORDER BY поле ASC

Условие WHERE не обязательно – если его не поставить, будут выбраны все записи:

SELECT * FROM имя_таблицы ORDER BY поле

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id айди name имя age возраст salary зарплата
1Дима23400
2Петя25500
3Вася23500
4Коля301000
5Иван27500
6Кирилл281000

Пример

Давайте получим все записи из таблицы и отсортируем их по возрастанию возраста:

SELECT * FROM workers WHERE id>0 ORDER BY age

SQL запрос выберет строки в следующем порядке:

id айди name имя age возраст salary зарплата
1Дима23400
3Вася23500
2Петя25500
5Иван27500
6Кирилл281000
4Коля301000

Так как выбираются все записи, то блок WHERE можно не указывать:

SELECT * FROM workers ORDER BY age

Можно также указать тип сортировки в явном виде – ASC – результат от этого не изменится:

SELECT * FROM workers ORDER BY age ASC

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

Mysql сортировка по двум полям. Сортировка данных в SQL (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, в котором отобразим форму с выбором вида сортировки, по типу тех, что делают в интернет-магазинах и выведем саму таблицу со значениями из базы данных.

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

Источник: https://meliorem.ru/backend/mysql/order-by-sortirovka-dannyx-v-tablice-bd-mysql/

WikiMedForum.Ru
Добавить комментарий