Сортировка данных в SQL командой ORDER BY

Резюме: В этой статье наглядно показано, как применять предложение ORDER BY для сортировки данных с помощью указания заданного порядка (возрастающего или убывающего).

Введение

Операнд SQL ORDER BY не является обязательным условием команды SELECT. Он дает возможность сортировать строки, получаемые из SELECT совместно с одним или несколькими критериям сортировки заданного порядка.

Далее отображен стандартный синтаксис условия ORDER BY:

sql сортировка

В этом синтаксисе:

  • Вначале разместите условие ORDER BY после FROM. База данных расценит команду SELECT с опцией сортировки в следующем порядке: FROM > SELECT > ORDER BY.
  • Затем укажите порядок сортировки после ORDER BY.
  • После чего примените опцию ASC, чтобы набор результатов данных отображался в порядке возрастания или DESC для того, чтобы результирующий набор данных был отсортирован в порядке убывания (от большего к меньшему).

Следует обратить внимание на то, что в SQL по умолчанию в ORDER BY (если вы не указали ни ASC, ни DESC) используется опция ASC.

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

несколько условий сортировки sql

В этом примере вначале данные отсортируются по выражению sort_expression_1, а в рамках одинаковых значений sort_expression_1 по выражению sort_expression_2.

Следует учесть, что в SQL если не указывать условие ORDER BY, то команда SELECT не станет сортировать набор результатов, либо отсортирует их по ключевому полю (Primary Key).

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

Для наглядной демонстрации будем использовать таблицу employees.

структура таблицы employees для сортировки

1) Рассмотрим сортировку значений в одном столбце на примере ORDER BY

В примере ниже команда SELECT выбирает данные из столбцов «id сотрудника», «имя», «фамилия», «дата приема на работу» и «зарплата» таблицы employees: select * from employees, или так как на картинке ниже

выборка из таблицы employees

результат выборки из таблицы employees

Как видно из вывода, строки не упорядочены.

Далее ORDER BY применяется чтобы отсортировать сотрудников по фамилии в алфавитном порядке:

применяем сортировку

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

ORDER BY сортирует строки по значениям в столбце first_name.

2) Сортировка значений в нескольких столбцах на примере ORDER BY

Попробуем отсортировать сотрудников по имени и фамилии в порядке возрастания и по фамилии в порядке убывания:

Using SQL ORDER BY clause to sort values in multiple columns example

2 result of Using SQL ORDER BY clause to sort values in multiple columns example

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

Обратите внимание на изменение положения двух сотрудников: Alexander Khoo и Alexander Hunold в наборе результатов.

3) Сортировка значений в числовом столбце с помощью ORDER BY

Данный способ реализации применяет условие ORDER BY, чтобы выстроить сотрудников с учетом их заработной платы (от большой к маленькой):

3 Using SQL ORDER BY clause to sort values in a numeric column example

3 result of Using SQL ORDER BY clause to sort values in a numeric column example

4) Использование SQL ORDER BY для сортировки по датам пример

Помимо символьных и числовых данных, вы можете использовать предложение ORDER BY для сортировки строк по дате. Например, в следующем операторе используется предложение ORDER BY для сортировки сотрудников по значениям в столбце hire_date:

4 Using SQL ORDER BY to sort by dates example

4 result of Using SQL ORDER BY to sort by dates example

Чтобы увидеть сотрудников, которые пришли в компанию от последнего к самому раннему, вы сортируете сотрудников по датам приема на работу в порядке убывания:

4-2 Using SQL ORDER BY to sort by dates example

4-2 result of Using SQL ORDER BY to sort by dates example

Сводка

Используйте предложение ORDER BY для сортировки строк, возвращаемых предложением SELECT. Применимо как к MySQL? так и к другим вариациям.

Используйте параметр ASC для сортировки строк по возрастанию и DESC для сортировки строк по убыванию.

Предыдущая статья: Оператор SELECT

Следующая статья: Предложение DISTINCT

Комментарии: 1
  1. Максим

    А будут статьи про группировку having, where, Null and not null?

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: