Space Base Space Base
+7 928 008-80-89
ru
  • en
  • es
  • Главная
  • Услуги
  • Портфолио
  • Библиотека
  • Контакты
  • Главная
  • Услуги
  • Портфолио
  • Библиотека
  • Контакты
  1. Библиотека
  2. SQL
  3. Сортировка данных в SQL (ORDER BY)
logo

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

26.05.2015

При выборке данных бывает важно получить их в определенном упорядоченном виде. Сортировка может быть выполнена по любым полям с любым типом данных. Это может быть сортировка по возрастанию или убыванию для числовых полей. Для символьных (текстовых) полей это может быть сортировка в алфавитном порядке, хотя по сути, она так же является сортировкой по возрастанию или убыванию. Она так же может быть выполнена в любых направлениях – от А, до Я, и наоборот от Я, до А.

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

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 goods ORDER BY title

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

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

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

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

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

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

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

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

SELECT * FROM goods ORDER BY price DESC

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

SELECT * FROM goods ORDER BY price ASC

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

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

column1 column2 column3
3 1 c
1 3 c
2 2 b
2 1 b
1 2 a
1 3 a
3 4 a

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

SELECT * FROM mytable ORDER BY column1 ASC, column2 DESC, column3 ASC

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

column1 column2 column3
1 3 a
1 3 c
1 2 a
2 2 b
2 1 b
3 1 a
3 1 c

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

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

SELECT * FROM goods WHERE price < 100 ORDER BY title ASC

Другие материалы:

Обновление нескольких записей разными данными значениями в SQL


Язык структурированных запросов SQL


SQL запросы на выборку (SELECT)


Написать комментарий

Комментарии

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


коммент.

avatar

Дарья

- 02 апреля 2024, 15:42 ↓
Спасибо огромное за полезную статью! Очень помогло :-)
avatar

Секрестный_Агент

- 21 июня 2023, 08:11 ↓
Лет 4 не занимался сайтами базами с опытом более 20 лет но все равно забывается (групповая сотрировка). Помогло вспомнить. Спасибо.
avatar

123

- 11 января 2023, 16:23 ↓
Благодарю за вышенаписанную информацию.
avatar

Антон Сенников

- 23 октября 2022, 09:35 ↓
Добрый день, Alex.
Сортировка нужна именно для упорядочивания. Например, таблица телефонного справочника с полями: город, фамилия, телефон. Если мы будем сортировать по двум полям, то это выполняется последовательно, сначала первое, затем второе. Т.е. если мы будем сортировать по городу и фамилии (именно в таком порядке), то получим новый порядок: в первой колонке упорядочены и сгруппированы города, а во второй упорядочены фамилии для каждого города. Это показывает пример с цифрами в статье.
avatar

Alex

- 22 октября 2022, 13:25 ↓
Не совсем понял про сортировку по нескольким полям. Данные же перемешаются и не будут соответствовать друг другу. Объясните этот момент пожалуйста, зачем такая сортировка?
avatar

чОрт

- 23 июня 2022, 15:02 ↓
Спасибо за помощь, годная инфа, процветания Вам, здоровья, радости, счастья в жизни в обильных количествах
avatar

Денис

- 27 декабря 2020, 23:43 ↓
Отличная статья, Спасибо!!!
avatar

Роман

- 03 декабря 2020, 20:36 ↓
Спасибо
avatar

Антон Сенников

- 01 сентября 2020, 22:20 ↓
Елизавета, спасибо за ваше замечание. Ошибку исправил. Теперь запрос выполняется с сортировкой по полю title.
avatar

Лиза

- 01 сентября 2020, 21:13 ↓
В конце написано: упорядочив по алфавиту, но в запросе упорядочивают по цене…
avatar

Аногим

- 14 июня 2020, 23:26 ↓
Спасибо, коротко и по делу, и ровно, то, что я искал.

Разработка сайтов

Корпоративный сайт
Интернет-магазин
Лендинг - одностраничный сайт
Сайт-визитка
Сайт-портфолио

Проектирование

Прототип, UX-дизайн

Дизайн

UI-дизайн
Логотип

+54 911 2801-4950

info@space-base.net
+7 928 008-80-89

Web-сайты для успешного бизнеса

Web-сайты для успешного бизнеса

Главная Услуги Портфолио События Библиотека Контакты
+7 928 008-80-89 Меню
Политика в отношении обработки персональных данных © Copyright 2014 - | Space-Base

Лучшее время начать свой проект - Сейчас!

Выбраны опции:

Отправить сообщение на:

Telegram WhatsApp

Отправляя сообщение, вы даете свое согласие на
обработку песональных данных