Encyklopedia SQL - Sortowanie wyników wyszukiwania – ORDER BY  

Udostępnij na: Facebook

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:

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:

  1. 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:

  1. Klauzula ORDER BY służy do rosnącego sortowania zbioru wyników.
  2. Klauzula ORDER BY DESC służy do malejącego sortowania zbioru wyników.
  3. Zarówno ORDER BY jak i ORDER BY DESC mogą przyjmować kolekcję kolumn. Kolejność sortowania będzie zależeć od kolejności ich wystąpienia po ORDER BY (DESC).

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: