Problem:
Chcesz posortować wyniki zapytania SQL w kolejności rosnącej lub malejącej.
Przykład:
Nasza baza danych zawiera tabelę o nazwie salary_information
z danymi w kolumnach id
, first_name
, last_name
i monthly_earnings
. Chcemy posortować pracowników według ich monthly_earnings
w porządku malejącym.
id | imię | nazwisko | month_earnings |
---|---|---|---|
1 | Kalwin | Rios | 3500 |
2 | Alan | Paterson | 4000 |
3 | Kurt | Evans | 2300 |
4 | Alek | Watkins | 5500 |
Rozwiązanie:
Użyjemy ORDER BY
klauzula. Oto zapytanie:
Użyjemy funkcji CURRENT_DATE
aby uzyskać aktualną datę:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY monthly_earnings DESC
Oto wynik zapytania:
imię | nazwisko | month_earnings |
---|---|---|
Alek | Watkins | 5500 |
Alan | Paterson | 4000 |
Kalwin | Rios | 3500 |
Kurt | Evans | 2300 |
Teraz widzimy, że Alex Watkins jest pierwszy na liście, co oznacza, że zarabia najwięcej pieniędzy.
Dyskusja:
Użyj ORDER BY
klauzulę, jeśli chcesz posortować zbiór danych w kolejności rosnącej lub malejącej. Składnia ORDER BY
klauzula jest następująca:
SELECT col1, col2, … FROM table ORDER BY col1, col2, … ASC|DESC;
W powyższym, ASC|DESC
oznacza, że należy wybrać słowo kluczowe ASC
(rosnąco) lub DESC
(malejąco), aby uporządkować zestaw danych tak, jak chcesz.
Oprócz sortowania według kolumn liczbowych możesz także sortować według kolumn tekstowych. ORDER BY
klauzula posortuje kolumny tekstu w kolejności alfabetycznej.
Zamiast nazwy kolumny możesz również użyć pozycji liczenia kolumny od lewej. Tak więc w naszym przykładzie zamiast pisać:
ORDER BY monthly_earnings DESC
możesz też napisać:
ORDER BY 3 DESC
Jeśli chcesz posortować tabelę z przykładu według first_name
kolumna w kolejności alfabetycznej (rosnąco), możesz użyć następującego zapytania:
SELECT first_name, last_name, monthly_earnings FROM salary_information ORDER BY first_name ASC
Warto również zauważyć, że możesz sortować według wielu kolumn. Jest to pomocne, gdy niektóre wartości w danej kolumnie się powtarzają i potrzebujesz dodatkowego sortowania. W takim przypadku oddziel nazwy kolumn przecinkami w klauzuli ORDER BY.
Możesz nawet sortować rosnąco według jednej kolumny i malejąco według drugiej. Poniżej zilustrowano składnię tej kombinacji:
ORDER BY Col1 ASC, Col2 DESC;
Jeśli pominiesz ASC
lub DESC
słowo kluczowe, sortowanie rosnąco jest domyślnie wykonywane.