Próbuję sortować według wielu kolumn w SQL i w różnych kierunkach. column1będą sortowane malejąco i column2rosnąco.
W jaki sposób mogę to zrobić?
Próbuję sortować według wielu kolumn w SQL i w różnych kierunkach. column1będą sortowane malejąco i column2rosnąco.
W jaki sposób mogę to zrobić?
Odpowiedzi:
ORDER BY column1 DESC, column2
Sortuje wszystko column1najpierw (malejąco), a następnie column2(rosnąco, co jest ustawieniem domyślnym), gdy column1pola dla dwóch lub więcej wierszy są równe.
column1najpierw, a następnie za column2każdym razem, gdy column1pola dla dwóch wierszy są równe.
column2a 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, LastNamewpisy 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 ASCzamó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