Zapytanie SELECT: Sortowanie danych (ORDER BY)

Podczas pracy z bazą danych często chcemy posortować wyniki w określonej kolejności, np. od najnowszych rekordów, alfabetycznie lub według wartości liczbowych. Do tego celu służy klauzula ORDER BY w MySQL.

Domyślnie wyniki zapytania SELECT nie mają określonej kolejności – ich układ zależy od sposobu przechowywania danych w bazie. Dzięki `ORDER BY` możemy wymusić porządek i uporządkować dane według naszych potrzeb.

Składnia klauzuli ORDER BY

✅ Podstawowa składnia:

  • SELECT – określa, które kolumny chcemy pobrać.
  • FROM – wskazuje tabelę, z której pobieramy dane.
  • ORDER BY – określa kolumnę, według której sortujemy wyniki.
  • ASC – sortowanie rosnące (domyślne, można pominąć).
  • DESC – sortowanie malejące.
Przykład
SELECT kolumny
FROM nazwa_tabeli
ORDER BY kolumna [ASC | DESC];

📌 Sortowanie rosnące i malejące (ASC i DESC)

📝 Opis:

  • ASC - oznacza sortowanie rosnące (od A do Z, od najmniejszej do największej wartości).
  • DESC - oznacza sortowanie malejące (od Z do A, od największej do najmniejszej wartości).
Przykład
-- Przykład: Pobranie listy użytkowników posortowanych alfabetycznie według nazwiska
SELECT * FROM uzytkownicy
ORDER BY nazwisko ASC;

-- Przykład: Pobranie zamówień od największej wartości do najmniejszej
SELECT * FROM zamowienia
ORDER BY wartosc DESC;

-- Sortowanie dat od najnowszych do najstarszych:
SELECT * FROM zamowienia
ORDER BY data_zamowienia DESC;

📌 Sortowanie według wielu kolumn

✅ Przykład: Posortowanie użytkowników najpierw według nazwiska, a jeśli jest takie samo – według imienia

📝 Opis:

  • Najpierw MySQL sortuje dane według nazwisko, a jeśli nazwiska są takie same – według imie.
  • Można łączyć sortowanie rosnące i malejące
Przykład
-- Sortowanie według wielu kolumn
SELECT * FROM uzytkownicy
ORDER BY nazwisko ASC, wiek DESC;

-- Sortuje alfabetycznie po nazwisku, ale w przypadku duplikatów pierwszeństwo mają starsze osoby (wiek DESC).

📌 Sortowanie danych liczbowych

✅ Przykład: Pobranie 10 najdroższych produktów

📝 Opis:

  • Sortujemy produkty od najdroższych do najtańszych.
  • LIMIT 10 zwraca tylko 10 pierwszych rekordów.
Przykład
SELECT * FROM produkty
ORDER BY cena DESC
LIMIT 10;

Podsumowanie

  • Klauzula ORDER BY pozwala sortować wyniki zapytania `SELECT`.
  • Domyślne sortowanie (`ASC`) jest rosnące, można je pominąć.
  • `DESC` służy do sortowania malejącego (od największej wartości do najmniejszej).
  • Możemy sortować według wielu kolumn jednocześnie.
  • Sortowanie przyspiesza analizę danych, zwłaszcza w połączeniu z `LIMIT`.