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 ASC i DESC.
  • 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: LIMIT musi znajdować się na samym końcu zapytania. W połączeniu z ORDER BY pozwala 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ść) oraz LIMIT 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() i LIMIT są 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 BY jest 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 po kolumna1, a gdy wartości są równe – decyduje kolumna2. Każda kolumna może mieć oddzielne ASC/DESC.

materiały: link