Próbuję sortować według wielu kolumn w SQL i w różnych kierunkach. column1
będą sortowane malejąco i column2
rosnąco.
W jaki sposób mogę to zrobić?
Próbuję sortować według wielu kolumn w SQL i w różnych kierunkach. column1
będą sortowane malejąco i column2
rosnąco.
W jaki sposób mogę to zrobić?
Odpowiedzi:
ORDER BY column1 DESC, column2
Sortuje wszystko column1
najpierw (malejąco), a następnie column2
(rosnąco, co jest ustawieniem domyślnym), gdy column1
pola dla dwóch lub więcej wierszy są równe.
column1
najpierw, a następnie za column2
każdym razem, gdy column1
pola dla dwóch wierszy są równe.
column2
a następnie wykonuje sortowanie STABILNE według column1
. Jest to bardziej jasne dla osób, które wiedzą, czym jest stabilne sortowanie.
Inne odpowiedzi nie zawierają konkretnego przykładu, więc oto:
Biorąc pod uwagę następującą tabelę Ludzie :
FirstName | LastName | YearOfBirth
----------------------------------------
Thomas | Alva Edison | 1847
Benjamin | Franklin | 1706
Thomas | More | 1478
Thomas | Jefferson | 1826
Jeśli wykonasz zapytanie poniżej:
SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC
Zestaw wyników będzie wyglądał następująco:
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
Czy jest jakiś sposób, aby to przezwyciężyć?
FirstName, LastName
wpisy z wyraźnymiYearOfBirth
Porządkowanie wielu kolumn zależy od odpowiadających im wartości obu kolumn: Oto mój przykład tabeli, w której dwie kolumny nazwane są alfabetami i liczbami, a wartościami w tych dwóch kolumnach są porządek rosnący i malejący .
Teraz wykonuję Order By w tych dwóch kolumnach, wykonując poniższe polecenie:
Teraz ponownie wstawiam nowe wartości w tych dwóch kolumnach, gdzie wartość alfabetu w kolejności ASC :
i kolumny w przykładowej tabeli wyglądają tak. Teraz ponownie wykonaj tę samą operację:
Możesz zobaczyć, że wartości w pierwszej kolumnie są w porządku malejącym, ale w drugiej kolumnie nie ma kolejności ASC.
(g, 10),(g,12)
. Następnie uruchom zapytanie według zamówienia, otrzymasz drugą kolumnę jako ASC
zamówienie (to znaczyg-10,g-11,g-12)
Możesz użyć wielokrotnego zamawiania pod wieloma warunkami,
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