Hoe kan ik sorteren op meerdere kolommen in SQL en in verschillende richtingen. column1
wordt aflopend gesorteerd en column2
oplopend.
Antwoord 1, autoriteit 100%
ORDER BY column1 DESC, column2
Dit sorteert alles eerst op column1
(aflopend) en vervolgens op column2
(oplopend, wat de standaardinstelling is) wanneer de velden column1
voor twee of meer rijen zijn gelijk.
Antwoord 2, autoriteit 34%
De andere antwoorden missen een concreet voorbeeld, dus hier komt het:
Gezien de volgende tabel Mensen:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Als u de onderstaande query uitvoert:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
De resultatenset ziet er als volgt uit:
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | More | 1478
Thomas | Jefferson | 1826
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Antwoord 3, autoriteit 12%
SELECT *
FROM mytable
ORDER BY
column1 DESC, column2 ASC
Antwoord 4, autoriteit 2%
De volgorde van meerdere kolommen hangt af van de corresponderende waarden van beide kolommen:
Hier is mijn tabelvoorbeeld waar twee kolommen zijn genoemd met alfabetten en cijfers en de waarden in deze twee kolommen zijn ASC en DESC Orders.
Nu voer ik Order uit door in deze twee kolommen door onder de opdracht uit te voeren:
Nu opnieuw, voeg ik nieuwe waarden in deze twee kolommen, waar alfabetwaarde in ASC Bestel:
En de kolommen in Voorbeeldtafel zien er zo uit.
Voer nu opnieuw dezelfde werking uit:
U kunt de waarden in de eerste kolom zien staan in dec-bestelling, maar de tweede kolom is niet in ASC-bestelling.
Antwoord 5
U kunt meerdere bestellingen gebruiken op meerdere conditie,
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
Antwoord 6
SELECT id,
first_name,
last_name,
salary
FROM employee
ORDER BY salary DESC, last_name;
Als u records van een tabel wilt selecteren, maar ze wilt zien dat ze volgens twee kolommen worden gesorteerd, kunt u dit doen met de bestelling door. Deze clausule komt aan het einde van uw SQL-query.
Voeg na de bestelling op trefwoord de naam van de kolom toe waarmee u eerst wilt sorteren (in ons voorbeeld, salaris). Voeg vervolgens na een komma de tweede kolom toe (in ons voorbeeld, last_name). U kunt de sorteervolgorde (oplopend of aflopend) afzonderlijk voor elke kolom wijzigen. Als u oplopende (lage naar hoge) bestelling wilt gebruiken, kunt u het SC-trefwoord gebruiken; Dit sleutelwoord is echter optioneel, omdat dit de standaardorder is wanneer er geen is opgegeven. Als u afleveringsvolgorde wilt gebruiken, plaatst u het Desc-trefwoord na de juiste kolom (in het voorbeeld gebruikten we aflopende volgorde voor de salariskolom).