0Pricing
SQL Academy · Lekcja

ORDER BY dla jednej i wielu kolumn

Sortuj wyniki rosnąco lub malejąco, sortuj według wielu kolumn i kontroluj położenie wartości NULL za pomocą NULLS FIRST / NULLS LAST.

ORDER BY dla jednej i wielu kolumn to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Dlaczego potrzebują Państwo ORDER BY

Tabela SQL jest nieuporządkowanym zbiorem. Bez ORDER BY baza danych może zwrócić wiersze w dowolnej kolejności — a ta kolejność może zmieniać się między uruchomieniami. Jeśli kolejność ma znaczenie w interfejsie użytkownika lub raporcie, proszę sortować jawnie.

Sortowanie według jednej kolumny

Domyślne sortowanie odbywa się rosnąco:

SELECT id, email FROM users ORDER BY created_at;       -- oldest first
SELECT id, email FROM users ORDER BY created_at ASC;
SELECT id, email FROM users ORDER BY created_at DESC;  -- newest first

Sortowanie według wielu kolumn

Proszę wymienić kolumny według priorytetu. Druga kolumna rozstrzyga remisy w pierwszej:

SELECT first_name, last_name, age
FROM users
ORDER BY last_name ASC, first_name ASC, age DESC;

Sortowanie według wyrażenia

Można sortować według dowolnego wyrażenia:

SELECT email, full_name
FROM users
ORDER BY LENGTH(email) DESC, email ASC;

Sortowanie według aliasu lub pozycji

Można odwołać się do aliasu z listy SELECT lub do jego pozycji liczonej od 1:

SELECT id, total * 0.9 AS discounted
FROM orders
ORDER BY discounted DESC;     -- by alias

SELECT id, total
FROM orders
ORDER BY 2 DESC;               -- by position (avoid in code — fragile)

NULLS FIRST / NULLS LAST

Proszę określić, gdzie mają znaleźć się wartości NULL:

-- Default: NULLs LAST when ASC, FIRST when DESC
SELECT * FROM users ORDER BY last_login_at DESC NULLS LAST;
SELECT * FROM users ORDER BY last_login_at ASC  NULLS FIRST;

Stabilne sortowanie i rozstrzyganie remisów

Jeśli wiele wierszy ma tę samą wartość klucza sortowania, baza danych może zwrócić je w dowolnej kolejności. Proszę dodać klucz główny jako dodatkowe kryterium, aby uzyskać deterministyczne wyniki:

SELECT * FROM orders
ORDER BY created_at DESC, id DESC;

ORDER BY a indeksy

Jeśli dla kolumny lub kolumn użytych w ORDER BY istnieje indeks, baza danych może odczytać wiersze w odpowiedniej kolejności bez osobnego etapu sortowania.

-- With index on created_at DESC, this can use the index directly:
SELECT * FROM events ORDER BY created_at DESC LIMIT 100;

CASE w ORDER BY

Niestandardowe sortowanie za pomocą CASE:

-- Show priority orders first:
SELECT * FROM orders
ORDER BY
  CASE status
    WHEN 'urgent'   THEN 0
    WHEN 'normal'   THEN 1
    ELSE 2
  END,
  created_at DESC;

ORDER BY jest wykonywane po WHERE

ORDER BY działa na wyniku WHERE/GROUP BY/HAVING. Najpierw odbywa się filtrowanie, a dopiero potem sortowanie.

Nie należy sortować ogromnych tabel bez LIMIT

Sortowanie wyniku zawierającego miliard wierszy jest kosztowne. Jeśli potrzebują Państwo tylko pierwszych N wierszy, proszę dodać LIMIT — planer może wtedy zastosować strategię Top-N.

SELECT * FROM events ORDER BY created_at DESC LIMIT 50;

Podsumowanie

ORDER BY zapewnia deterministyczną kolejność wyników.

  • ASC / DESC można określić dla każdej kolumny
  • Wiele kolumn pozwala rozstrzygać remisy
  • NULLS FIRST / LAST, gdy ma to znaczenie
  • Duże sortowania należy zawsze łączyć z LIMIT

Szybki test

Jaki jest domyślny kierunek sortowania w SQL?

Często zadawane pytania

Czy lekcja „ORDER BY dla jednej i wielu kolumn” jest bezpłatna?

Tak — pełny tekst „ORDER BY dla jednej i wielu kolumn” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „ORDER BY dla jednej i wielu kolumn”?

Sortuj wyniki rosnąco lub malejąco, sortuj według wielu kolumn i kontroluj położenie wartości NULL za pomocą NULLS FIRST / NULLS LAST. Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „ORDER BY dla jednej i wielu kolumn”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wybieranie kolumn i wyrażeń
  2. Filtrowanie WHERE: operatory porównań i logiki
  3. ORDER BY dla jednej i wielu kolumn
  4. Podstawy LIMIT, OFFSET i paginacji
← Powrót do SQL Academy