Tutorial wyjaśnia klauzulę MySQL ORDER BY oraz jej użycie zarówno z opcją ASC jak i DESC. Opiszemy to wyrażenie MySQL z pomocą prostych przykładów.
1. Składnia klauzuli ORDER BY
2. ORDER BY W/O ASC lub DESC
3. ORDER BY DESC
4. ORDER BY Pozycja względna
5. ORDER BY Dwa pola ASC & DESC
Przejrzyjmy teraz każdą z sekcji po kolei.
Klauzula ORDER BY MySQL
Polecenie SELECT MySQL nie zwraca domyślnie posortowanego zestawu wyników. W związku z tym, aby posortować dane wyjściowe, musisz dołączyć klauzulę ORDER BY do zapytania SELECT. Możemy osiągnąć następujące cele za pomocą klauzuli ORDER BY:
- Wykonaj sortowanie rekordów według pojedynczego/wielu pól
- Sortuj wiersze według różnych kolumn w kolejności rosnącej (ASC) lub malejącej (DESC).
Następująca ilustracja przedstawia składnię klauzuli ORDER BY:
Składnia
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
Klauzula ORDER BY domyślnie wykonuje sortowanie w kolejności rosnącej. Termin ASC jest akronimem oznaczającym rosnąco, podczas gdy DESC oznacza malejąco. Dla DESC, musisz wspomnieć o tym w zapytaniu SELECT.
Proszę zauważyć, że możesz nawet określić wyrażenie z ORDER BY w MySQL. Również, obie opcje ASC i DESC są opcjonalne dla tego wyrażenia.
Oto kilka przykładowych ćwiczeń dla praktyki.
Klauzula ORDER BY MySQL Przykłady
Sprawdźmy, jak używać klauzuli ORDER BY z zapytaniami SELECT MySQL.
Używanie klauzuli order by bez opcji asc/desc
Aby zademonstrować, najpierw stwórzmy tabelę o nazwie Sample i wypełnijmy ją danymi testowymi.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
Następnie wstawmy trochę danych manekina do naszych testów.
Po tym musimy sprawdzić zawartość naszej tabeli Sample. Zobacz poniżej.
SELECT *FROM Sample;
Jej dane wyjściowe są następujące:
Teraz, wykonamy klauzulę ORDER BY na pliku „vendor_name”. I, będziemy obserwować zestaw wyników otrzymanych z bazy danych MySQL:
SELECT *FROM SampleORDER BY vendor_name;
Uzyskasz wynik pokazujący poniższe dane wyjściowe:
Możesz ocenić z powyższego zestawu wyników, że sortowanie odbyło się w domyślnej kolejności rosnącej.
Sortuj w kolejności malejącej
W tym przykładzie, zademonstrujemy klauzulę ORDER BY do sortowania w kolejności malejącej. W tym celu będziemy musieli określić ją jawnie.
Tutaj jest instrukcja MySQL do sortowania w porządku malejącym:
SELECT *FROM SampleORDER BY vendor_name DESC;
Wynikiem SELECT jest:
Sortuj według pola na pozycji względnej
Możliwe jest użycie klauzuli MySQL ORDER BY do sortowania według pola na pozycji względnej.
Gdy określamy nazwy kolumn w zapytaniu SELECT, pierwsze pole jest na pozycji pierwszej, drugie na drugiej itd. Co więcej, możemy potwierdzić ten fakt na przykładzie.
Tutaj znajduje się instrukcja SELECT, która wyświetla pola i sortuje je według względnej pozycji.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Tutaj jest zestaw wyników, który otrzymamy po uruchomieniu powyższego polecenia:
Widzimy, że MySQL posortował według pola sample_size, które odpowiada czwartej kolumnie.
Użycie ORDER BY do sortowania na dwóch kolumnach
Wcześniej wspomnieliśmy, że możesz użyć ORDER BY na jednym lub więcej polach. W takim przypadku MySQL traktuje pierwsze pole jako główne, a drugie jako drugorzędne. Dlatego najpierw sortuje pole główne, a następnie drugie.
W związku z tym, w tym przykładzie zademonstrujemy ORDER BY na dwóch kolumnach, jedno pole jako ASC, a drugie DESC. Ponadto, musimy wstawić więcej rekordów, aby pokazać, że druga kolumna również zostanie posortowana.
Możesz zignorować instrukcję INSERT podaną na początku powyżej i użyć tej poniżej.
Teraz mamy kilka wierszy z tymi samymi nazwami sprzedawców, ale różnymi rozmiarami próbek. I, będziemy teraz sortować na podstawie vendor_name (primary) i sample_size (secondary) fields.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
This MySQL statement produces this result:
You can see all the values in the primary field got sorted in the ascending order. And, it is also evident from the output that sorting (in DESC) took place on the second one as well.
Now, let’s find out what would be the result, had we sorted only on the vendor name.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Ta komenda da wynik jak:
Wyraźnie widać z powyższego wyniku, że wiersze należące do Google i Twittera nie zostały posortowane na podstawie ich wielkości próby.
Mamy nadzieję, że po zakończeniu tego poradnika, powinieneś czuć się komfortowo w używaniu klauzuli MySQL ORDER BY. Jednakże, możesz poćwiczyć więcej na przykładach, aby nabrać pewności siebie.
Ponadto, aby nauczyć się SQL od podstaw do głębi, przeczytaj nasz tutorial MySQL krok po kroku.
.