Ich versuche, nach mehreren Spalten in SQL und in verschiedene Richtungen zu sortieren. column1
wird absteigend und column2
aufsteigend sortiert.
Wie kann ich das machen?
ORDER BY column1 DESC, column2
Dies sortiert alles zuerst nach column1
(absteigend) und dann nach column2
(aufsteigend, dies ist die Standardeinstellung), wenn die Felder column1
für zwei oder mehr Zeilen gleich sind.
Den anderen Antworten fehlt ein konkretes Beispiel. Hier ist es also:
Ausgehend von der folgenden Tabelle People:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Wenn Sie die folgende Abfrage ausführen:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
Die Ergebnismenge sieht folgendermaßen aus:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
SELECT *
FROM mytable
ORDER BY
column1 DESC, column2 ASC
Die Reihenfolge mehrerer Spalten hängt von den entsprechenden Werten beider Spalten ab: Hier ist mein Tabellenbeispiel, in dem zwei Spalten mit Alphabeten und Zahlen benannt sind und die Werte in diesen beiden Spalten asc und absteigende Reihenfolge.
Jetzt führe ich Order By in diesen beiden Spalten aus, indem ich den folgenden Befehl ausführe:
Jetzt füge ich wieder neue Werte in diese beiden Spalten ein, wobei der Alphabet-Wert in AUF Reihenfolge steht:
und die Spalten in der Beispieltabelle sehen so aus. Führen Sie nun erneut die gleiche Operation aus:
Sie können sehen, dass die Werte in der ersten Spalte in absteigender Reihenfolge sind, die zweite Spalte jedoch nicht in ASC-Reihenfolge.
Sie können Mehrfachbestellungen unter mehreren Bedingungen verwenden.
ORDER BY
(CASE
WHEN @AlphabetBy = 2 THEN [Drug Name]
END) ASC,
CASE
WHEN @TopBy = 1 THEN [Rx Count]
WHEN @TopBy = 2 THEN [Cost]
WHEN @TopBy = 3 THEN [Revenue]
END DESC