Предложение ORDER BY. Сортировка SQL – Предложение ORDER BY Запросы sql order by пример

💖 Нравится? Поделись с друзьями ссылкой

В будущем нам может понадобиться сортировать нашу выборку - в алфавитном порядке для текста или по возрастанию/убыванию - для цифровых значений. Для таких целей в SQL есть специальный оператор ORDER BY .

1. Сортировка выбранных данных.

Давайте всю нашу таблицу посортируем по сумме реализации продукции, а именно по столбцу Amount .

SELECT * FROM Sumproduct ORDER BY Amount

Видим, что запрос посортировал записи по возрастанию в поле Amount . Обязательно нужно соблюдать последовательность расположения операторов, т.е. оператор ORDER BY должен идти в самом конце запроса. В противном случае будет получено сообщение об ошибке.

Также особенностью оператора ORDER BY является то, что он может сортировать данные по полю, которого мы не выбирали в запросе, то есть достаточно, чтобы оно вообще было в БД.

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

Теперь посортируем наш пример дополнительно за еще одним полем. Пусть это будет поле City , которое отображает место реализации продукции.

SELECT * FROM Sumproduct ORDER BY Amount, City

Очередность сортировки будет зависеть от порядка расположения полей в запросе. То есть, в нашем случае сначала данные будут рассортированы по колонке Amount , а затем по City .

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

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

SELECT * FROM Sumproduct ORDER BY Amount DESC , City

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


Следующий цикл:

Шаг 8. Простая сортировка

Если результат вашего SQL запроса должен стать исходным материалом некоего отчета, то вопрос сортировки в нем данных становится чрезвычайно важным, поскольку человеку, читающему неотсортированный должным образом отчет очень сложно быстро найти в нем нужную именно ему часть информации. Для сортировки данных по колонкам результата запроса (в нашем случае - по полям таблицы) в SQL используется ключевое слово ORDER BY. Пример самой простой сортировки приведен ниже. За основу взят запрос из шага 2: “Запрос с простым критерием отбора”. Сортируем сотрудников по полю S_NAME (Ф.И.О.).

SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE

Сортировка результата SQL запроса по одному полю.

Шаг 9. Сложная сортировка

Часто и даже практически всегда необходимо отсортировать данные более чем по одной колонке и не всегда в порядке возрастания. Синтаксис SQL предполагает после ключевого слова ORDER BY список колонок, разделенных запятой, а также, способ сортировки для каждой колонки: в порядке возрастания значений - ASC или порядке их убывания - DESC. В приведенном ниже примере мы показываем записи уже обо всех сотрудниках в порядке убывания их стажа. Сотрудников с одинаковым стажем сортируем в алфавитном порядке.

SELECT S_EXPERIENCE, S_NAME FROM D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC


Сортировка результата SQL запроса по двум полям.

Довольно часто обратный порядок сортировки используют с колонками типа [дата]. Если дата хранит, например, дату занесения информации, то при обратной сортировке в самом начале списка оказываются те записи, которые были добавлены недавно относительно остальных. В случае если запрос извлекает из базы данных анонсы новостей, то мы получаем список анонсов, отсортированных в порядке убывания их актуальности, что может быть крайне полезным, поскольку читают анонсы обычно сверху вниз, да и на новостных сайтах показывают их не все, а только несколько наиболее “свежих”.

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

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

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

Примечание:
Во всех статьях текущей категории уроков по 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 первым. Затем для записей с одинаковыми значениями первого поля выполняется сортировка по полю, указанному вторым, и т. д.

Рассказать друзьям