FirebirdSQL logo
 COMMENTSInstructions de procédure SQL (PSQL) 

Utilisation combinée de `FIRST …​ SKIP " et " ROWS ".

Vous ne pouvez pas utiliser ROWS en même temps que FIRST/SKIP dans la même instruction SELECT, mais vous pouvez utiliser une syntaxe différente dans différentes sous-requêtes.

Utilisation de ROWS dans UNION.

Lorsque vous utilisez ROWS avec l’instruction UNION, il sera appliqué au jeu de données fusionné, et doit être placé après la dernière instruction SELECT.

Si vous voulez restreindre les jeux de données retournés à une ou plusieurs instructions SELECT dans UNION, vous pouvez utiliser les options suivantes :

  1. Utilisez FIRST/SKIP dans ces instructions SELECT. Rappelez-vous que vous ne pouvez pas utiliser l’expression ORDER BY localement dans SELECT à l’intérieur de UNION - seulement globalement, à l’ensemble des données comprimées ; . Convertir les SELECT en tableaux dérivés avec des expressions ROWS.

Exemples

Vous trouverez ci-dessous les exemples précédemment utilisés pour la démonstration de FIRST/SKIP.

La requête suivante retournera les 10 premiers noms de la table PEOPLE (les noms seront également triés, voir "Exemples"). ORDER BY).

SELECT id, name
FROM People
ORDER BY name ASC
ROWS 1 TO 10

ou son équivalent

SELECT id, name
FROM People
ORDER BY name ASC
ROWS 10

La requête suivante renvoie tous les enregistrements de la table PEOPLE sauf les 10 premiers noms :

SELECT id, name
FROM People
ORDER BY name ASC
ROWS 11 TO (SELECT COUNT(*) FROM People)

Et cette requête renverra les 10 derniers enregistrements (notez les parenthèses) :

SELECT id, name
FROM People
ORDER BY name ASC
ROWS (SELECT COUNT(*) - 9 FROM People)
TO (SELECT COUNT(*) FROM People)

Cette requête renvoie les lignes 81 à 100 de la table PEOPLE :

SELECT id, name
FROM People
ORDER BY name ASC
ROWS 81 TO 100

FETCH, OFFSET

Les clauses FETCH et OFFSET sont des équivalents compatibles SQL:2008 des clauses FIRST/SKIP et une alternative à la clause ROWS.La clause OFFSET indique le nombre de lignes à sauter. La clause FETCH indique le nombre de lignes à récupérer.Les clauses OFFSET et FETCH peuvent être appliquées quel que soit le niveau d’imbrication des expressions de la requête.

Syntaxe
SELECT <columns> FROM ...
  [WHERE ...]
  [ORDER BY ...]
  [OFFSET <offset-fetch-expression> {ROW | ROWS}]
  [FETCH {FIRST | NEXT} [ <offset-fetch-expression> ] { ROW | ROWS } ONLY]

<offset-fetch-expression>  ::=
    <integer-literal>
  | <query-parameter>
Table 1. Paramètres des clauses `OFFSET' et `FETCH'.
Paramètre Description

integer-literal

integer littéral

query-parameter

Requête paramétrique. ? en DSQL et :paramname en PSQL

Note
  • Firebird ne supporte pas l’indication FETCH en pourcentage, qui est définie dans la norme.

  • Firebird ne supporte pas la proposition FETCH avec l’option WITH TIES définie dans la norme.

  • FIRST …​ SKIP et ROWS sont des alternatives non standard.

  • Les clauses OFFSET et/ou FETCH ne peuvent pas être combinées avec les clauses ROWS ou FIRST/SKIP dans la même expression de requête.

  • Les expressions, les références de colonnes, etc. ne sont pas autorisées dans les deux clauses.

  • Contrairement à la proposition ROWS, les propositions OFFSET et FETCH ne sont autorisées que dans l’instruction SELECT.