Klauzula FETCH jest podobna do omówionej wcześniej klauzuli LIMIT. Jednak to klauzula FETCH jest naturalną w języku SQL w przeciwieństwie do LIMIT.
Składnia klauzuli FETCH w PostgreSQL
1 2 |
OFFSET start { ROW | ROWS } FETCH { FIRST | NEXT } [ row_count ] { ROW | ROWS } ONLY |
Z powyższego szablonu widzisz, że jesteś w stanie wyświetlić zarówno pierwszy wierszy, kilka pierwszych wierszy, ale również zakres wierszy.
- ROW i FIRST są synonimami dla ROWS oraz NEXT.
- start wskazuje od którego wiersza rozpocznie się wyświetlanie zakresu danych w tabeli. Domyślnie start ma wartość 0,
- Licznik row_count domyślne jest ustawiony na 1, więc mogę jego wartość pominąć. Możesz je również wprost wpisać wartość tego parametru.
Użycie FETCH
Najprostszym użyciem klauzuli FETCH jest pokazanie pierwszego wiersza z tabeli.
1 2 3 |
SELECT film_id,title FROM film ORDER BY title FETCH FIRST ROW ONLY; |
W wyniku powyższego zapytanie otrzymasz pierwszy wpis z tabeli film.
SELECT film_id,title FROM film
ORDER BY title
FETCH FIRST 5 ROW ONLY;
Powyższe zapytanie wyświetli 5 pierwszych wierszy z tabeli film.
Kolejnym przykładem jest rozbudowa FETCH o OFFSET. Dzięki czemu możesz wyświetlić wyniki w tabeli od dowolnego jej miejsca.
1 2 3 4 |
SELECT film_id,title FROM film ORDER BY title OFFSET 9 ROWS FETCH FIRST 5 ROW ONLY; |
Wyświetliłeś 5 kolejnych wierszy poczynając od 10, pomimo tego, że OFFSET ustawiłeś na wartość 9.
W kolejnym wpisie zajmę się poleceniem IN.
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).