Ich versuche, nach mehreren Spalten in SQL und in verschiedene Richtungen zu sortieren. column1
würde absteigend und column2
aufsteigend sortiert werden .
Wie kann ich das machen?
Ich versuche, nach mehreren Spalten in SQL und in verschiedene Richtungen zu sortieren. column1
würde absteigend und column2
aufsteigend sortiert werden .
Wie kann ich das machen?
Antworten:
ORDER BY column1 DESC, column2
Dies sortiert alles zuerst nach column1
(absteigend) und dann nach column2
(aufsteigend, was die Standardeinstellung ist), wenn die column1
Felder für zwei oder mehr Zeilen gleich sind.
column1
zuerst und dann column2
immer dann sortiert, wenn die column1
Felder für zwei Zeilen gleich sind.
column2
und führt dann eine STABLE-Sortierung nach durch column1
. Dies ist klarer für Leute, die wissen, was stabile Sortierung ist.
Den anderen Antworten fehlt ein konkretes Beispiel, also hier geht es:
Angesichts der folgenden Personentabelle :
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
1.Firstname asc, Lastname desc, yearOfBirst asc and 2.Firstname asc, Lastname desc, yearOfBirst desc
Gibt es eine Möglichkeit, dies zu überwinden?
FirstName, LastName
Einträge mit unterschiedlichenYearOfBirth
Mehrere Reihenfolge der Spalten hängt von den beiden entsprechenden Werte der Spalte: Hier ist meine Tabelle Beispiel , in dem zwei benannten Spalten mit Alphabete und Zahlen und die Werte in diesen beiden Spalten sind asc und desc Aufträge.
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 Alphabetwert in ASC- Reihenfolge:
und die Spalten in der Beispieltabelle sehen folgendermaßen aus. Führen Sie nun erneut den gleichen Vorgang aus:
Sie können sehen, dass die Werte in der ersten Spalte in absteigender Reihenfolge sind, die zweite Spalte jedoch nicht in ASC-Reihenfolge.
(g, 10),(g,12)
. Führen Sie dann Ihre Order-by-Abfrage aus, und Sie erhalten die zweite Spalte als ASC
Order (das heißtg-10,g-11,g-12)
Sie können mehrere Bestellungen 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