Ich versuche, nach mehreren Spalten in SQL und in verschiedene Richtungen zu sortieren. column1würde absteigend und column2aufsteigend sortiert werden .
Wie kann ich das machen?
Ich versuche, nach mehreren Spalten in SQL und in verschiedene Richtungen zu sortieren. column1würde absteigend und column2aufsteigend 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 column1Felder für zwei oder mehr Zeilen gleich sind.
column1zuerst und dann column2immer dann sortiert, wenn die column1Felder für zwei Zeilen gleich sind.
column2und 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, LastNameEinträ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 ASCOrder (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