Сортировка данных в sql

Сортировка данных в sql

Изучаем SQL

  • 1. Введение в SQL
  • 2. Запросы на выборку
  • 3. Условия в запросах
  • 4. Cортировка данных
  • 5. Вставка записи
  • 6. Вставка нескольких записей
  • 7. Изменение записи

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

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

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

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

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

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

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

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

Сортировка в запросе 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 price ASC

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

Общая структура запроса с оператором ORDER BY

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

  • DESC — сортировка по убыванию
  • ASC (по умолчанию) — сортировка по возрастанию
Читайте также:  Эмулятор кнопочного телефона на пк

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

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

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

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

Примеры использования

Выведем названия авиакомпаний в алфавитном порядке из таблицы Company

Сортировка строковых данных осуществляется в лексикографическом (алфавитном) порядке.

Выведем всю информацию о полетах, отсортированную по времени вылета самолета в порядке возрастания и по времени прилета в аэропорт в порядке убывания, из таблицы Trip

В данном примере в начале отсортировывается информация по времени вылета. Затем там, где время вылета совпадает, отсортировывается по времени прилета.

Выведем все данные о покупках, совершенных Headley Quincey, отсортировав в порядке убывания стоимости стоимости товара

1. Вначале нужно узнать идентификатор Headley Quincey из таблицы FamilyMembers

2. Выведем все данные о покупках, совершенных Headley Quincey, из таблицы Payments

3. Отсортируем получившиеся данные в порядке убывания стоимости товара

Основные запросы

Условия выборки

Группировка

Сложение строк

Несколько таблиц

Длина строк

Изменение строк

Поиск по строкам

Работа с пробелами

Работа с регистром

Информация

Условия

Полезное

Разное

  • Типы полей
  • Организация базы данных
    создание правильной структуры —>
  • Подзапросы
  • SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop; mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price; https://habrahabr.ru/post/133781/ тут еще про переменные цикл получается SET @i = 0; SELECT * FROM product WHERE MOD(@i:=@i+1, 2) = 0; —>Переменные sql

Математические функции

Списки

Извлечение части даты

Получение даты и времени

Преобразование даты

Сложение дат

Тригонометрия

Отдельные символы

Системы счисления

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

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

Синтаксис

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

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

Читайте также:  Ветом для людей отзывы врачей

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

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

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

Примеры

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

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Пример

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

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

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
3 Вася 23 500
2 Петя 25 500
5 Иван 27 500
6 Кирилл 28 1000
4 Коля 30 1000

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

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

Пример

Давайте теперь отсортируем записи по убыванию возраста:

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

id
айди
name
имя
age
возраст
salary
зарплата
4 Коля 30 1000
6 Кирилл 28 1000
5 Иван 27 500
2 Петя 25 500
1 Дима 23 400
3 Вася 23 500

Пример

Давайте теперь отсортируем записи одновременно по возрастанию возраста и по убыванию зарплаты.

При этом записи сначала будут сортироваться по возрасту, а те записи, в которых возраст одинаковый (в нашем случае — 23), будут располагаться по убыванию зарплаты:

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

id
айди
name
имя
age
возраст
salary
зарплата
3 Вася 23 500
1 Дима 23 400
2 Петя 25 500
5 Иван 27 500
6 Кирилл 28 1000
4 Коля 30 1000

Пример

Давайте при тех же условиях (т.е. сначала сортировка по возрасту) отсортируем по возрастанию зарплаты.

Теперь первая и вторая запись поменяются местами так, чтобы сначала шла меньшая зарплата, а потом — большая:

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

Ссылка на основную публикацию
Сколько рублей получают ютуберы
Видеохостинг YouTube — не только развлекательная площадка, но и хороший источник дохода. Тысячи пользователей выкладывают ролики, пытаясь привлечь внимание аудитории....
Самый дорогой самсунг 2018
Samsung / Самсунг - южнокорейская компания, ведущий производитель смартфонов в мире. В первом квартале 2018 года доля Самсунг на мировом...
Самый лучший smart tv
Ежегодные обновления телевизионных технологий делают телевизоры уже больше, чем обычным экраном для демонстрации каналов. Растет популярность функции Smart TV, которая...
Сколько света мотает компьютер
Выбирая комплектующие для персонального компьютера (ПК) обычно обращают внимание на производительность и объем памяти, порой забывая о том, сколько же...
Adblock detector