OFFSET et FETCH vous permettent de récupérer des données par blocs. Ils définissent un bloc de lignes à renvoyer dans une seule requête.
offset_row_count ou fetch_row_count peut être un nombre ou une constante littérale. Vous pouvez omettre fetch_row_count ; par défaut, elle est égale à 1.
OFFSET spécifie le nombre de lignes à ignorer avant de commencer à renvoyer des lignes du jeu de résultats de la requête. OFFSET n ignore les n premières lignes du résultat.
Les valeurs négatives de OFFSET sont prises en charge : OFFSET -n ignore les n dernières lignes du résultat.
Les valeurs fractionnaires de OFFSET sont également prises en charge : OFFSET n - si 0 < n < 1, alors les n * 100 % premières lignes du résultat sont ignorées.
Exemple :
• OFFSET 0.1 - ignore les 10 % premières lignes du résultat.
Note • La fraction doit être un nombre Float64 inférieur à 1 et supérieur à zéro. • Si le calcul produit un nombre fractionnaire de lignes, il est arrondi à l’entier supérieur.
FETCH spécifie le nombre maximal de lignes pouvant figurer dans le résultat d’une requête.
L’option ONLY est utilisée pour renvoyer les lignes qui suivent immédiatement celles omises par OFFSET. Dans ce cas, FETCH est une alternative à la clause LIMIT. Par exemple, la requête suivante
WITH TIES permet de renvoyer toutes les lignes supplémentaires à égalité pour la dernière position dans l’ensemble de résultats selon la clause ORDER BY. Par exemple, si fetch_row_count est défini sur 5, mais que deux lignes supplémentaires ont les mêmes valeurs que la cinquième ligne dans les colonnes ORDER BY, l’ensemble de résultats contiendra sept lignes.
Selon la norme, la clause
OFFSET doit précéder la clause FETCH si les deux sont présentes.Le décalage effectif peut aussi dépendre du paramètre offset.
Exemples
ONLY :
Query
Response
WITH TIES :
Query
Response