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.