| Termin | Definicja |
|---|---|
| ORDER BY | ORDER BY to klauzula porządkująca wynik zapytania — bez niej kolejność wierszy nie jest gwarantowana. Rola klauzuli ORDER BY w zapytaniuORDER BY służy do określenia kolejności wierszy zwracanych przez zapytanie SQL. Sortowanie może odbywać się rosnąco, po zastosowaniu słowa ASC, albo malejąco, po zastosowaniu DESC. Przykładowo zapis ORDER BY cena ASC ustawia rekordy od najniższej do najwyższej wartości, a ORDER BY data_utworzenia DESC pokazuje najnowsze rekordy jako pierwsze. Jeżeli kierunek sortowania nie zostanie podany, domyślnie przyjmuje się porządek rosnący. Klauzula ORDER BY jest umieszczana na końcu podstawowej składni zapytania, po SELECT, FROM, WHERE, GROUP BY i HAVING. Może sortować według jednej kolumny albo według wielu kolumn. W przypadku zapisu ORDER BY nazwisko ASC, imie ASC najpierw porządkowane są wartości w kolumnie nazwisko, a dopiero przy jednakowych nazwiskach wykorzystywana jest kolumna imie. Bez ORDER BY relacyjna baza danych nie ma obowiązku zwracania wierszy w określonej kolejności, nawet jeśli wcześniejsze wykonania tego samego zapytania wyglądały identycznie. Sortowanie po wielu kolumnach i wyrażeniachORDER BY może wskazywać kolumny wybrane w części SELECT, a w wielu implementacjach także wyrażenia obliczane na potrzeby wyniku. Pozwala to sortować na przykład według sumy ceny i podatku albo według długości tekstu. Każda pozycja sortowania może mieć własny kierunek, dlatego zapis ORDER BY kategoria ASC, wynik DESC oznacza rosnące grupowanie według kategorii oraz malejące uporządkowanie wyników wewnątrz każdej kategorii. Warto zwracać uwagę na wartości NULL, czyli brak wartości. Sposób umieszczania NULL na początku lub na końcu posortowanego wyniku może zależeć od konkretnego silnika bazy danych i jego ustawień. Jeżeli aplikacja wymaga jednoznacznego położenia takich rekordów, należy użyć rozwiązania obsługiwanego przez używany silnik, na przykład jawnego określenia NULLS FIRST albo NULLS LAST, o ile dana implementacja je udostępnia. Znaczenie ma również porównywanie tekstu: kolejność może zależeć od zestawienia znaków, które określa między innymi sposób traktowania wielkości liter, akcentów i alfabetu. ORDER BY a jednoznaczność wynikówJeżeli kilka wierszy ma taką samą wartość we wszystkich kolumnach wymienionych w ORDER BY, ich wzajemna kolejność pozostaje nierozstrzygnięta. Nie należy zakładać, że baza zachowa kolejność dodania rekordów, kolejność fizycznego zapisu na dysku albo kolejność wynikającą z użytego indeksu. Aby uzyskać powtarzalny rezultat, trzeba dodać kolejną kolumnę rozstrzygającą remisy, zwykle unikatowy identyfikator. Przykład ORDER BY data_utworzenia DESC, id DESC pozwala ustalić kolejność także wtedy, gdy kilka rekordów ma identyczny znacznik czasu. ORDER BY jest szczególnie istotne przy wyświetlaniu tabel, generowaniu raportów i stronicowaniu danych. Połączenie sortowania z ograniczeniem liczby rekordów, takim jak LIMIT lub odpowiednikiem dostępnym w danym silniku, wymaga stabilnego porządku. Bez unikatowego kryterium rozstrzygającego ten sam rekord może pojawić się na różnych stronach albo zostać pominięty, gdy między zapytaniami zmieni się zawartość tabeli. Sama klauzula nie zmienia danych w bazie; wpływa wyłącznie na kolejność wierszy w konkretnym wyniku zapytania. Znaczenie dla diagnostyki laptopa i komputeraORDER BY jest elementem oprogramowania bazodanowego, dlatego jego nieprawidłowe działanie w aplikacji zwykle wynika z błędnej składni zapytania, sortowania po niewłaściwej kolumnie, niejednoznacznego traktowania NULL albo ustawień zestawienia znaków. Przy diagnozowaniu problemu warto sprawdzić dokładne zapytanie wysyłane przez program, typy danych kolumn, zastosowane filtry oraz to, czy aplikacja nie sortuje wyników ponownie po stronie interfejsu. Różnica między sortowaniem tekstowym a liczbowym może powodować pozornie błędną kolejność, na przykład wartość 100 może zostać umieszczona przed 20, gdy liczby są przechowywane jako tekst. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i ich podzespołów, w tym diagnostyką problemów z systemem, aplikacjami oraz działaniem nośników danych. W przypadku błędów związanych z ORDER BY pomocne jest przygotowanie komunikatu błędu, przykładowego zapytania, informacji o używanym silniku bazy danych i kilku rekordów pokazujących nieprawidłową kolejność. Takie dane pozwalają odróżnić problem samego zapytania od problemu z typem kolumny, kodowaniem znaków, konfiguracją programu lub uszkodzeniem środowiska, w którym aplikacja jest uruchamiana. |