Suche…


Bemerkungen

Der Zweck der ORDER BY-Klausel besteht darin, die von einer Abfrage zurückgegebenen Daten zu sortieren.

Beachten Sie, dass die Reihenfolge der von einer Abfrage zurückgegebenen Zeilen undefiniert ist, es sei denn, es gibt eine ORDER BY-Klausel.

Ausführliche Informationen zur ORDER BY-Klausel finden Sie in der MSDN-Dokumentation: https://msdn.microsoft.com/en-us/library/ms188385.aspx

Einfache ORDER BY-Klausel

Im Folgenden wird anhand der Employees-Tabelle die Spalte Id, FName und LName in (aufsteigender) LName-Reihenfolge zurückgegeben:

SELECT Id, FName, LName FROM Employees
ORDER BY LName

Kehrt zurück:

Ich würde FName LName
2 John Johnson
1 James Schmied
4 Johnathon Schmied
3 Michael Williams

Um in absteigender Reihenfolge zu sortieren, fügen Sie das DESC-Schlüsselwort nach dem Feldparameter hinzu, z. B. dieselbe Abfrage in absteigender LName-Reihenfolge:

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

ORDER BY mehrere Felder

Für die ORDER BY Klausel können mehrere Felder angegeben werden, entweder in ASCending- oder DESCending-Reihenfolge.

Mithilfe der Tabelle http://stackoverflow.com/documentation/sql/280/example-databases/1207/item-sales-table#t=201607211314066434211 können wir beispielsweise eine Abfrage zurückgeben, die nach SaleDate in aufsteigender Reihenfolge sortiert wird, und Menge in absteigender Reihenfolge.

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

Beachten Sie, dass das ASC Schlüsselwort optional ist und die Ergebnisse standardmäßig in aufsteigender Reihenfolge eines bestimmten Felds sortiert werden.

ORDER BY mit komplexer Logik

Wenn wir die Daten für jede Gruppe anders bestellen möchten, können wir dem ORDER BY eine CASE Syntax hinzufügen. In diesem Beispiel möchten wir Mitarbeiter aus Abteilung 1 nach Nachnamen und Mitarbeiter aus Abteilung 2 nach Gehalt bestellen.

Ich würde FName LName Telefonnummer ManagerId DepartmentId Gehalt Anstellungsdatum
1 James Schmied 1234567890 NULL 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 Schmied 1212121212 2 1 500 24-07-2016
5 Sam Sächsisch 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

Kundenspezifische Bestellung

Wenn Sie nach einer Spalte in einer anderen Reihenfolge als in alphabetischer / numerischer Reihenfolge bestellen möchten, können Sie mit case die gewünschte Reihenfolge angeben.

order by Group :

Gruppe Anzahl
Nicht im Ruhestand 6
Im Ruhestand 4
Gesamt 10

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

Gruppe Anzahl
Gesamt 10
Im Ruhestand 4
Nicht im Ruhestand 6


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow