Sök…


Anmärkningar

Syftet med ORDER BY-klausulen är att sortera data som returneras av en fråga.

Det är viktigt att notera att ordningen på rader som returneras av en fråga är odefinierad om det inte finns en ORDER BY-klausul.

Se MSDN-dokumentation för fullständig information om ORDER BY-klausulen: https://msdn.microsoft.com/en-us/library/ms188385.aspx

Enkel ORDER BY-klausul

Med tabellen Anställda nedan är ett exempel för att returnera kolumnerna Id, FName och LName i (stigande) LName-ordning:

SELECT Id, FName, LName FROM Employees
ORDER BY LName

Returns:

Id fNAME LNAME
2 John Johnson
1 James Smed
4 Johnathon Smed
3 Michael Williams

För att sortera i fallande ordning lägg till DESC-nyckelordet efter fältparametern, t.ex. samma fråga i LName fallande ordning är:

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

BESTÄLL AV flera fält

Flera fält kan anges för ORDER BY klausulen, i antingen ASCending eller DESCending order.

Med hjälp av http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 kan vi till exempel returnera en fråga som sorteras efter SaleDate i stigande ordning och Kvantitet i fallande ordning.

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

Observera att ASC nyckelordet är valfritt och resultaten sorteras i stigande ordning för ett givet fält som standard.

BESTÄLLNING AV med komplex logik

Om vi vill beställa uppgifterna annorlunda för varje grupp kan vi lägga till en CASE syntax till ORDER BY . I det här exemplet vill vi beställa anställda från avdelning 1 efter efternamn och anställda från avdelning 2 efter lön.

Id fNAME LNAME Telefonnummer Administratörs DepartmentId Lön HireDate
1 James Smed 1234567890 NULL 1 1000 2002/01/01
2 John Johnson 2468101214 1 1 400 23-03-2005
3 Michael Williams 1357911131 1 2 600 12-05-2009
4 Johnathon Smed 1212121212 2 1 500 24-07-2016
5 Sam Saxon 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

Anpassad beställning

Om du vill beställa efter en kolumn med något annat än alfabetisk / numerisk beställning kan du använda case att ange vilken ordning du vill ha.

order by Group returnerar:

Grupp Räkna
Inte pensionerad 6
Pensionerad 4
Total 10

order by case group when 'Total' then 1 when 'Retired' then 2 else 3 end kommer tillbaka:

Grupp Räkna
Total 10
Pensionerad 4
Inte pensionerad 6


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow