Blog JSystems - z miłości do programowania

Szukaj

Filtry TOP i OFFSET-FETCH w MS SQL Server

Opcja top jest własną funkcją języka SQL, która pozwala ograniczać liczbę lub procent wierszy zwracanych przez zapytanie. Jest ona zależna od dwóch elementów będących częścią jej specyfikacji – pierwszy jest liczbą lub procentem zwracanych wierszy, drugi kolejnością.  Zastosowanie liczby dla zwracanych wierszy:


select top(10) ProductID, Name from SalesLT.Product order by ProductID;


9.png (613×332)


Przy pomocy top zostało zwróconych 10 pierwszych wierszy wyniku zapytania, względem sortowania po identyfikatorze produktu. Zastosowanie procentu dla zwracanych wierszy:


select top(3) percent ProductID, Name from SalesLT.Product order by ProductID;


10.png (684×323)


Zostało zwróconych  9 wierszy, ponieważ tabela SalesLT.Product składa się z 294 wierszy, a 3% z tej liczby, po zaokrągleniu w górę to 9.


Opcja top to bardzo przydatny rodzaj filtru, ma jednak dwa mankamenty – nie jest standardem oraz nie obsługuje funkcji pomijania początkowych wierszy. Standard SQL definiuje filtr podobny do top, który nazwany został offset-fetch. Dodaje on obsługę pomijania, co czyni go bardzo przydatnym przy wykonywaniu doraźnych zadań stronicowania wyników zapytania.


select ProductID, Name from SalesLT.Product order by ProductID offset 10 rows fetch next 10 rows only;


11.png (632×366)


Jak widać w porównaniu z poprzednimi przykładami, pierwszych 10 wierszy zostało pominięte i wyświetlone zostało kolejne 10 wierszy, względem identyfikatora produktu. Aby użyć tego filtrowania, ale bez pominięcia choćby jednego wiersza, to po słowie offset należy wpisać 0. Natomiast jeśli zachodzi potrzeba pominięcia pewnej liczby wierszy i wyświetlenia reszty zawartości tabeli to po prostu nie używa się już klauzuli fetch.


 

Przyjdź do nas na szkolenie z baz danych SQL Server! Mamy szereg szkoleń w ofercie: SQL, T-SQL, tuning, administracja i wiele innych. Sprawdź dostępne szkolenia SQL Server
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu! Zapisz się do newslettera