Outils pour utilisateurs

Outils du site


cours:informatique:dev:db:postgres:fondamentaux_postgresql:230_clause_fetch

Table des matières

PostgreSQL FETCH

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
  • On définit le nombre d’enregistrements à ignorer via la valeur “row_to_skip” après la clause OFFSET : 0 pour ne pas ignorer d'enregistrements.
  • On fournit ensuite le nombre d'enregistrements à récupérer avec la valeur “row_count” après la clause FETCH.
  • Les mots clé ROW et ROWS sont des synonymes ;
  • Les mots clés 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.

la clause OFFSET doit être placée avant FETCH dans la norme SQL:2008 cependant les clauses OFFSET et FETCH peuvent être placées dans n'importe quel ordre pour PostgreSQL.

FETCH vs LIMIT

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;

Résumé

  • Utiliser la clause PostgreSQL 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.

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/dev/db/postgres/fondamentaux_postgresql/230_clause_fetch.txt · Dernière modification : 2025/04/06 14:43 de yoann