Zoeken…


Opmerkingen

Het doel van de clausule ORDER BY is om de gegevens te sorteren die door een query worden geretourneerd.

Het is belangrijk op te merken dat de volgorde van rijen die door een query worden geretourneerd, niet is gedefinieerd, tenzij er een ORDER BY-clausule is.

Zie MSDN-documentatie voor volledige details van de ORDER BY-clausule: https://msdn.microsoft.com/en-us/library/ms188385.aspx

Eenvoudige BESTELBEPALING

Met behulp van de tabel Werknemers hieronder is een voorbeeld om de kolommen Id, FName en LName in (oplopende) LName-volgorde te retourneren:

SELECT Id, FName, LName FROM Employees
ORDER BY LName

Geeft terug:

ID kaart FName lname
2 John Johnson
1 James smid
4 Johnathon smid
3 Michael Williams

Om in aflopende volgorde te sorteren, voegt u het sleutelwoord DESC toe na de veldparameter, bijvoorbeeld dezelfde zoekopdracht in aflopende volgorde van LName is:

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

BESTELLEN OP meerdere velden

Voor de clausule ORDER BY kunnen meerdere velden worden opgegeven, in ASCending- of DESCending-volgorde.

Als we bijvoorbeeld de tabel http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 gebruiken , kunnen we een zoekopdracht retourneren die in oplopende volgorde sorteert op SaleDate, en Hoeveelheid in aflopende volgorde.

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

Merk op dat het ASC trefwoord optioneel is en de resultaten standaard worden gesorteerd in oplopende volgorde van een bepaald veld.

BESTEL DOOR met complexe logica

Als we de gegevens per groep anders willen bestellen, kunnen we een CASE syntaxis toevoegen aan de ORDER BY . In dit voorbeeld willen we werknemers van afdeling 1 op achternaam bestellen en werknemers van afdeling 2 op salaris.

ID kaart FName lname Telefoonnummer BeheerderId DepartmentId Salaris Huur datum
1 James smid 1234567890 NUL 1 1000 01-01-2002
2 John Johnson 2468101214 1 1 400 23-03-2005
3 Michael Williams 1357911131 1 2 600 12-05-2009
4 Johnathon smid 1212121212 2 1 500 24-07-2016
5 Sam Saksisch 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

Aangepaste bestelling

Als u per kolom wilt bestellen met behulp van iets anders dan alfabetische / numerieke volgorde, kunt u case gebruiken om de gewenste volgorde op te geven.

order by Group retourneert:

Groep tellen
Niet met pensioen 6
Gepensioneerd 4
Totaal 10

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

Groep tellen
Totaal 10
Gepensioneerd 4
Niet met pensioen 6


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow