Inspiracja , wiedza , realizacja
Jsystems

W przebudowie

Login



Java

Oracle

Linux

Android

PostgreSQL

Microsoft SQL Server

Filtry TOP i OFFSET-FETCH

Rafał Czarkowski
Data dodania: Jun 21, 2016
Data aktualizacji: Jun 21, 2016

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;




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;




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;




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.