Предложение ORDER BY. Как задаётся SQL-сортировка? Transact sql как отсортировать по возрастанию

Нередко возникает необходимость вывести результат запроса в определённом порядке, например, по алфавиту. Для этого в СУБД существует специальная функция на языке SQL - сортировка. При этом программист может выбрать, по каким полям и в каком порядке она будет происходить, чтобы добиться желаемого результата, не применяя серьёзных навыков программирования.

Что такое сортировка в базе данных?

Работа с базами данных постоянно связана с большим объёмом информации, которой необходимо определять порядок. В настоящее время существует целый ряд СУБД, имеющий широкий спектр функций, самыми популярными из которых являются Oracle и MS SQL. Сортировка информации, как одна из главных процедур в работе с БД, обеспечивается специальной встроенной функцией в каждой из них.

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

Команда сортировки

SQL-сортировка в базе данных обеспечивается путём использования функции ORDER BY. Так, при выводе информации из базы данных, после указания столбцов и таблиц из которых будет произведено считывание, в запросе необходимо указать команду сортировки, после чего определить поле или поля, по которым будет производиться сортировка.

Например, если из таблицы People необходимо получить данные из полей Name и Age, при этом выведя результат в алфавитном порядке по столбцу Name, то это поможет сделать следующий запрос: SELECT Name, Age FROM People ORDER BY Name.

Как задать порядок сортировки?

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

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

Альтернативные методы сортировки

В случае отсутствия возможности использования встроенной функции SQL-сортировки, можно написать один из известных алгоритмов. При необходимости достижения самого быстрого упорядочивания элементов, стоит применить метод основанный на половинном разбивании массива элементов. Большой популярностью также обладают способы ранжирования "пузырьком", в котором два соседних элемента меняются местами в случае неверного расположения, "пирамидальная сортировка", отправляющая наибольший элемент в конец списка, а также "сортировка вставками", предопределяющая местоположение каждого элемента по очереди.

Собственноручное написание алгоритма не позволит существенно увеличить скорость сортировки, однако, поспособствует развитию навыков программирования, а также позволит модифицировать процесс, подстроив схему ранжирования под определённую базу данных для повышения эффективности работы программы.

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

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

За упорядочивание строк, выгружаемых в SQL-запросе, отвечает предложение ORDER BY. Оно располагается в самом конце запроса:

SELECT <Перечень столбцов> FROM <Перечень таблиц> ORDER BY <Условие сортировки>

В условии сортировки указываются столбцы, по которым будут упорядочены полученные строки таблицы:

ORDER BY col1, col2

Порядок сортировки в SQL

Возможны 2 варианта сортировки: по возрастанию и по убыванию. Для указания типа сортировки в запросе после названия столбца указывается ключевое слово ASC (ascending) или DESC (descending), которые определяют возрастающий либо убывающий порядок соответственно. По умолчанию используется тип ASC:

ORDER BY col1 -- следующее предложение будет равнозначным ORDER BY col1 ACS

Также возможно указать разный порядок для разных столбцов:

ORDER BY col1 DESC, col2 ASC

Для закрепления материала решите задачу на учебной БД:

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

SELECT id, Группа, Дата_найма FROM Сотрудники ORDER BY Группа, Дата_найма DESC

Пополним синтаксис оператора SELECT предложением ORDER BY (вертикальная черта означает необходимость выбора одного из вариантов):

SELECT [Имя_таблицы.]Имя_столбца[, [Имя_таблицы.]Имя_столбца2 …] FROM [[Имя_базы_данных.]Имя_Схемы.]Имя_таблицы Имя_столбца [, [Имя_таблицы.]Имя_столбца2 …]]

  • Вперёд >

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы мы могли развивать его дальше.

Предложение ORDER BY в Access сортирует записи, возвращенные запросом, по возрастанию или по убыванию значений указанного поля (полей).

Синтаксис

SELECT список_полей
FROM таблица
WHERE условие_отбора
[, поле2 ][, ...]]]

Инструкция SELECT, содержащая предложение ORDER BY, включает в себя следующие элементы:

Замечания

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

По умолчанию применяется порядок сортировки по возрастанию (от А до Я, от 0 до 9). В двух приведенных ниже примерах показана сортировка имен сотрудников по фамилиям.

SELECT LastName, FirstName
FROM Employees
ORDER BY LastName;
SELECT LastName, FirstName
FROM Employees
ORDER BY LastName ASC;

Чтобы выполнить сортировку по убыванию (от Я до А, от 9 до 0), добавьте зарезервированное слово DESC в конце каждого поля, по которому вы хотите отсортировать записи. В примере ниже выполняется сортировка фамилий сотрудников в порядке убывания заработной платы.

SELECT LastName, Salary
FROM Employees
ORDER BY Salary DESC, LastName;

Если в предложении ORDER BY указать поле, содержащее данные типа Memo или объекты OLE, возникнет ошибка. Ядро СУБД Microsoft Access не поддерживает сортировку по полям этих типов.

Предложение ORDER BY обычно является последним элементом в инструкции SQL.

В предложение ORDER BY можно включать дополнительные поля. Сначала записи сортируются по полю, указанному в предложении 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 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

В продолжение темы:
Программы

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