Sortowanie – ORDER BY
W tym odcinku opanujesz sortowanie wyników: rosnąco, malejąco, losowo oraz po wielu kolumnach jednocześnie. Kombinacja ORDER BY + LIMIT to klasyk egzaminacyjny.
Zadanie 1: ASC i DESC – sortowanie rosnące i malejące
- Cel: Opanowanie składni sortowania wyników przy użyciu słów kluczowych
ASCiDESC. - Standard: Wymagane jest jawne deklarowanie kierunku sortowania w celu zwiększenia czytelności kodu i uniknięcia błędów wynikających z domyślnych ustawień silnika bazy danych.
Zadanie 2: ORDER BY + LIMIT
- Cel: Ograniczanie liczby zwracanych rekordów przy użyciu klauzuli
LIMIT. - Standard:
LIMITmusi znajdować się na samym końcu zapytania. W połączeniu zORDER BYpozwala na precyzyjne wyselekcjonowanie ekstremów (np. najtańszych, najnowszych lub najlepszych wyników).
Zadanie 3: ORDER BY RAND() – losowe rekordy
- Cel: Opanowanie schematu zapytania wybierającego losowy podzbiór danych.
- Wzorzec: Połączenie
ORDER BY RAND()(które przypisuje każdemu wierszowi losową wartość) orazLIMIT X(które wycina określoną liczbę tych wierszy). Jest to standardowe rozwiązanie w arkuszach egzaminacyjnych (np. INF.03).
Wskazówka: Formuła zawsze taka sama:
ORDER BY RAND() LIMIT [liczba].RAND()iLIMITsą nierozłączne przy losowym wyborze.
Zadanie 4: WHERE + ORDER BY + LIMIT – ważna kolejność klauzul!
- Cel: Zrozumienie i stosowanie ścisłej hierarchii klauzul SQL.
- Logika: Filtrowanie
(WHERE)zawsze musi nastąpić przed sortowaniem(ORDER BY), a ograniczenie liczby wyników (LIMIT) wykonuje się na samym końcu, na już uporządkowanym zbiorze.
Zadanie 5: Sortowanie po wielu kolumnach
- Cel: Zastosowanie wielopoziomowego sortowania wyników.
- Logika: Pierwsza kolumna w
ORDER BYjest nadrzędna. Kolejne kolumny są brane pod uwagę tylko wtedy, gdy w poprzedniej wystąpią identyczne wartości (tzw. "remis").
Wskazówka:
ORDER BY kolumna1, kolumna2– MySQL sortuje pokolumna1, a gdy wartości są równe – decydujekolumna2. Każda kolumna może mieć oddzielneASC/DESC.
materiały: link