Поиск…


замечания

Цель предложения ORDER BY - сортировать данные, возвращаемые запросом.

Важно отметить, что порядок строк, возвращаемых запросом, не определен, если не существует предложение ORDER BY.

Подробную информацию о предложении ORDER BY см. В документации MSDN: https://msdn.microsoft.com/en-us/library/ms188385.aspx

Простое предложение ORDER BY

Используя таблицу Employees , ниже приведен пример возврата столбцов Id, FName и LName в порядке возрастания LName:

SELECT Id, FName, LName FROM Employees
ORDER BY LName

Возвращает:

Я бы FName LName
2 Джон Джонсон
1 Джеймс кузнец
4 Джонатон кузнец
3 Майкл Williams

Чтобы отсортировать в порядке убывания, добавьте ключевое слово DESC после параметра поля, например, один и тот же запрос в порядке убывания LName:

SELECT Id, FName, LName FROM Employees
ORDER BY LName DESC

ORDER BY несколькими полями

Несколько полей могут быть указаны для предложения ORDER BY в порядке ASCending или DESCending.

Например, используя таблицу http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 , мы можем вернуть запрос, который сортируется по SaleDate в порядке возрастания, и Количество в порядке убывания.

SELECT ItemId, SaleDate, Quantity
FROM [Item Sales]
ORDER BY SaleDate ASC, Quantity DESC

Обратите внимание, что ключевое слово ASC является необязательным, и результаты сортируются по возрастанию по заданному полю по умолчанию.

ORDER BY со сложной логикой

Если мы хотим упорядочить данные по-разному для каждой группы, мы можем добавить синтаксис CASE в ORDER BY . В этом примере мы хотим заказать сотрудников из Департамента 1 по фамилии и сотрудникам из отдела 2 по зарплате.

Я бы FName LName Номер телефона ManagerID DepartmentID Оплата труда Дата приема на работу
1 Джеймс кузнец 1234567890 НОЛЬ 1 1000 01-01-2002
2 Джон Джонсон 2468101214 1 1 400 23-03-2005
3 Майкл Williams 1357911131 1 2 600 12-05-2009
4 Джонатон кузнец 1212121212 2 1 500 24-07-2016
5 Сэм саксонский 1372141312 2 2 400 25-03-2015
The following query will provide the required results:
SELECT Id, FName, LName, Salary FROM Employees
ORDER BY Case When DepartmentId = 1 then LName else Salary end

Пользовательский заказ

Если вы хотите заказать по столбцу, используя что-то другое, кроме алфавитного / числового порядка, вы можете использовать case чтобы указать нужный вам заказ.

order by Group :

группа подсчитывать
Не на пенсии 6
В отставке 4
Всего 10

order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end возвращает:

группа подсчитывать
Всего 10
В отставке 4
Не на пенсии 6


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow