Sortowanie wyników
Za pomocą polecenia SELECT wyniki zostały zwrócone w tej samej kolejności, w jakiej rekordy zostały dodane do bazy danych. To jest domyślna kolejność sortowania. W tej sekcji przyjrzymy się, jak możemy sortować wyniki naszych zapytań. Sortowanie to po prostu zmiana kolejności wyników zapytania w określony sposób. Sortowanie można przeprowadzić na jednej kolumnie lub na więcej niż jednej kolumnie. Można to zrobić na liczbach, ciągach znaków, a także na typach danych daty.
Co to jest ORDER BY w MySQL?
MySQL ORDER BY jest używany w połączeniu z zapytaniem SELECT do sortowania danych w uporządkowany sposób. Klauzula MySQL ORDER BY służy do sortowania zestawów wyników zapytań w porządku rosnącym lub malejącym.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
TUTAJ
- „Instrukcja SELECT…” to zwykłe zapytanie wybierające
- „|” reprezentuje alternatywy
- „[WHERE warunek | GROUP BY„ nazwa_pól (y) „HAVING warunek” to opcjonalny warunek używany do filtrowania zestawów wyników zapytania.
- „ORDER BY” wykonuje sortowanie zestawu wyników zapytania
- „[ASC | DESC]” to słowo kluczowe używane do sortowania zestawów wyników w porządku rosnącym lub malejącym. Uwaga ASC jest używane jako domyślne.
Co to są słowa kluczowe DESC i ASC?
ASC to krótka forma wznoszenia |
MySQL DESC to krótka forma określająca malejąco |
Służy do sortowania wyników zapytania w stylu od góry do dołu. |
Służy do sortowania wyników zapytania w stylu od dołu do góry |
Podczas pracy z typami danych daty najwcześniejsza data jest wyświetlana u góry listy. |
. Podczas pracy z typami dat najnowsza data jest wyświetlana u góry listy. |
Podczas pracy z numerycznymi typami danych najniższe wartości są wyświetlane na górze listy. |
Podczas pracy z liczbowymi typami danych najwyższe wartości są wyświetlane u góry zestawu wyników zapytania. |
Podczas pracy z ciągami danych zestaw wyników zapytania jest sortowany od tych, które zaczynają się od litery A, a kończą na literę Z. |
Podczas pracy z ciągowymi typami danych zestaw wyników zapytania jest sortowany od tych, które zaczynają się od litery Z, a kończą na literę A. |
Zarówno słowa kluczowe SQL DESC, jak i ASC są używane razem w połączeniu z instrukcją SELECT i klauzulą MySQL ORDER BY.
Składnia DESC i ASC
Słowo kluczowe SQL DESC sort ma następującą podstawową składnię.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
TUTAJ
- SELECT {fieldName (s) | *} FROM tableName (s) to instrukcja zawierająca pola i tabele, z których ma zostać pobrany zestaw wyników.
- [WHERE condition] jest opcjonalne, ale można go użyć do filtrowania danych zgodnie z podanym warunkiem.
- ORDER BY nazwa (-y) pól jest obowiązkowa i jest polem, na którym ma być wykonane sortowanie. Słowo kluczowe MySQL DESC określa, że sortowanie ma być w porządku malejącym.
- [LIMIT] jest opcjonalny, ale można go użyć do ograniczenia liczby wyników zwracanych z zestawu wyników zapytania.
Przykłady:
Spójrzmy teraz na praktyczny przykład -
SELECT * FROM members;
Wykonanie powyższego skryptu w środowisku MySQL na myflixdb daje nam następujące wyniki pokazane poniżej.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Załóżmy, że dział marketingu chce, aby szczegóły dotyczące członków były uporządkowane malejąco według daty urodzenia. Pomoże im to wysłać życzenia urodzinowe w odpowiednim czasie. Możemy uzyskać wspomnianą listę, wykonując zapytanie takie jak poniżej -
SELECT * FROM members ORDER BY date_of_birth DESC;
Wykonanie powyższego skryptu w środowisku MySQL na myflixdb daje nam następujące wyniki pokazane poniżej.
To samo zapytanie w porządku rosnącym
WYBIERZ * OD członków ORDER BY date_of_birth ASC
Uwaga: wartości NULL oznaczają brak wartości (nie zero ani pusty ciąg). Obserwuj sposób, w jaki zostały posortowane.
Więcej przykładów
Rozważmy następujący skrypt, który zawiera listę wszystkich rekordów składowych.
SELECT * FROM `members`;
Wykonanie powyższego skryptu daje następujące wyniki pokazane poniżej.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Załóżmy, że chcemy uzyskać listę, która sortuje zestaw wyników zapytania za pomocą pola płci, użylibyśmy poniższego skryptu.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Najpierw wyświetlono członków „żeńskich”, a następnie członków „mężczyzn”, ponieważ w przypadku użycia klauzuli ORDER BY DESC bez określenia słowa kluczowego ASC lub MySQL DESC, MySQL posortował zestaw wyników zapytania w porządku rosnącym.
Spójrzmy teraz na przykład, w którym sortowanie odbywa się przy użyciu dwóch kolumn ; pierwsza z nich jest domyślnie sortowana w kolejności rosnącej, natomiast druga kolumna jest sortowana w kolejności malejącej.
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Wykonanie powyższego skryptu w środowisku roboczym MySQL na myflixdb daje następujące wyniki.
Kolumna płci była domyślnie sortowana rosnąco, podczas gdy kolumna z datą urodzenia była jawnie sortowana malejąco
Dlaczego możemy używać DESC i ASC?
Załóżmy, że chcemy wydrukować historię płatności dla członka biblioteki wideo, aby pomóc w odpowiedzi na pytania z recepcji, czy nie byłoby bardziej logiczne, aby płatności były drukowane w malejącej kolejności chronologicznej, począwszy od ostatniej płatności do wcześniejszej płatności?
DESC w SQL to słowo kluczowe, które przydaje się w takich sytuacjach. Możemy napisać zapytanie, które posortuje listę w porządku malejącym według daty płatności.
Załóżmy, że dział marketingu chce uzyskać listę filmów według kategorii, na podstawie której członkowie mogą zdecydować, które filmy są dostępne w bibliotece podczas wypożyczania filmów, czy nie byłoby bardziej logiczne posortować nazwy kategorii i tytuły rosnąco, tak aby członkowie mogą szybko wyszukiwać informacje na liście?
W takich sytuacjach przydatne jest słowo kluczowe ASC; możemy uzyskać listę filmów posortowaną według nazwy kategorii i tytułu filmu w porządku rosnącym.
Podsumowanie
- Sortowanie wyników zapytania polega na ponownym rozmieszczaniu wierszy zwróconych z zestawu wyników zapytania w kolejności rosnącej lub malejącej.
- Słowo kluczowe DESC w języku SQL służy do sortowania zestawu wyników zapytania w porządku malejącym.
- Słowo kluczowe ASC służy do sortowania zestawu wyników zapytania w porządku rosnącym.
- Zarówno DESC, jak i ASC działają w połączeniu ze słowem kluczowym ORDER BY. Można ich również używać w połączeniu z innymi słowami kluczowymi, takimi jak klauzula WHERE i LIMIT
- Wartość domyślna ORDER BY, gdy nic nie zostało wyraźnie określone, to ASC.