Encyklopedia SQL - Sortowanie wyników wyszukiwania – ORDER BY
Autor: Paweł Wilkosz
Opublikowano: 2012-01-23
Do tej pory, wyciągając wyniki z bazy danych, otrzymywałeś je w porządku ustalonym przez system bazodanowy. Najczęściej kolejność rekordów w zbiorze wynikowym odpowiadała kolejności wprowadzania ich do bazy danych. Elastyczność języka SQL pozwala na określenie formy prezentacji informacji, wyekstraktowanych z tabel, ze szczególnym uwzględnieniem procedury sortowania rosnącego i malejącego.
Przed wykonaniem zadań zapoznaj się z następującym materiałem:
- Wyświetlanie danych, podstawowy SELECT i wybór kolumn
- Ograniczanie wyświetlania wierszy, podstawy WHERE
- Łączenie warunków ograniczających, AND, OR w WHERE
Po wykonaniu zadań będziesz wiedział:
- w jaki sposób sortować rosnąco i malejąco zbiór wynikowy.
Instrukcja ORDER BY
Wykorzystując klauzulę ORDER BY w zapytaniu SQL, pamiętaj o dwóch istotnych kwestiach:
- ORDER BY musi wskazywać na kolumny, które mają ulec procedurze sortowania.
W najprostszej formie zapytanie SELECT z ORDER BY przyjmie następującą postać:
SELECT kolumna1, kolumna2, … , kolumnaN
FROM Tabela
ORDER BY kolumna1, …, kolumnaN
Aby dokładniej zrozumieć procedurę konstruowania zapytania warto posłużyć się następującym przykładem. Deweloper baz danych w firmie AdventureWorks dostał za zadanie wyciągnąć z bazy danych nazwy produktów wraz z podaniem informacji. Które z nich mają najniższy współczynnik StandardCost, który najwyższy, oraz w jaki sposób zmienia się on pomiędzy kolejnymi produktami. Aby zrealizować te założenia należy zastosować następujące zapytanie:
SELECT Name, StandardCost
FROM Production.Product
ORDER BYStandardCost
co w rezultacie zwróci zbiór danych zgodny z Rys. 1.
Rys. 1. Wykorzystanie ORDER BY w SELECT.
W ogólnej postaci zapytania nadmieniłem, iż ORDER BY może przyjmować jako argument zbiór kolumn. W związku z tym zapytanie:
SELECT Name, StandardCost
FROM Production.Product
ORDER StandardCost, Name
najpierw będzie sortowało wyniki według kolumny StandardCost, a w ramach nich wg Name. Zatem w początkowych rekordach użytkownik otrzyma dane zgodne z następującym schematem:
Aaa 0.00
Aab 0.00
Bbb 0.00
…
Zzz 0.00
Aaa 1.00
Aab 1.00
…
Zzz 1.00
…
Instrukcja ORDER BY DESC
Klauzula ORDER BY DESC działa na takiej samej zasadzie jak ORDER BY, z tą różnicą, iż otrzymane wyniki będą sortowane malejąco. Ogólna postać zapytania wygląda następująco:
SELECT kolumna1, kolumna2, … , kolumnaN
FROM Tabela
ORDER BY kolumna1, …, kolumnaN DESC
Przykładowo, podczas próby wyciągnięcia z tabeli Production.Product wszystkich produktów, które zostały ostatnio zaktualizowane, możesz wykorzystać następujący fragment kodu:
SELECT Name, ModifiedDate
FROM Production.Product
ORDER BY ModifiedDate DESC
zwracający zbiór danych podobnych do Rys. 2.:
Rys. 2. Wykorzystanie ORDER BY DESC do malejącego sortowania zbioru wynikowego.
Podobnie jak w ORDER BY, ORDER BY DESC może przyjmować zbiór kolumn. Kolejność sortowania będzie ściśle zależeć od ich kolejności, wymienionych po ORDER BY.
Informacja |
Zapamiętaj, że:
|
Podsumowanie
W niniejszej części Encyklopedii dowiedziałeś się, w jaki sposób wstępnie formatować otrzymany zbiór wynikowy, wykorzystując w tym celu sortowanie rosnące i malejące.
W kolejnej części nauczysz się wybierać dane za pomocą operatora LIKE. Stanowić on będzie również wprowadzenie do wyrażeń regularnych w języku SQL.
Dodatkowo zobacz: