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.
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.
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 :
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
.
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.
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>
Paramètre | Description |
---|---|
integer-literal |
integer littéral |
query-parameter |
Requête paramétrique. |
Note
|
|