Notes et traduction du tutoriel PostgreSQL Tutorial
Pour ignorer un certain nombre d'enregistrements et récupérer un nombre précis d'enregistrements, on utilise souvent la clause LIMIT dans l'instruction SELECT.
La clause LIMIT est largement utilisée par les SGBD mais n'est pas un standard SQL.
Pour se conformer avec le standard SQL, PostgreSQL supporte la clause FETCH pour ignorer des enregistrements et récupérer un nombre voulu d'enregistrements.
OFFSET row_to_skip { ROW | ROWS } FETCH { FIRST | NEXT } [ ROW_COUNT ] { ROW | ROWS } ONLY
OFFSET
: 0 pour ne pas ignorer d'enregistrements.FETCH
.ROW
et ROWS
sont des synonymes ;FIRST
et NEXT
sont synonymes.Comme évoqué pour LIMIT, les enregistrements ne sont pas ordonnés dans les tables. Il faut donc utiliser ORDER BY avec FETCH pour rendre les sous ensembles sélectionnées consistants.
Les clauses FETCH et LIMIT sont équivalentes. Si vous souhaitez que votre application soit compatible avec d'autres SGDB, vous devriez utiliser FETCH car elle suit le standard SQL.
-- Récupère seulement le premier enregistrement SELECT film_id, title FROM film ORDER BY title FETCH FIRST ROW ONLY; -- Récupère 5 enregistrements avec offset SELECT film_id, title FROM film ORDER BY title OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;
FETCH
pour ignorer un nombre d'enregistrements et récupérer un nombre spécifique d'enregistrements retournés par une requête en respectant le standard SQL:2008.