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 firstSortowanie 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
- Wybieranie kolumn i wyrażeń
- Filtrowanie WHERE: operatory porównań i logiki
- ORDER BY dla jednej i wielu kolumn
- Podstawy LIMIT, OFFSET i paginacji