web-dev-qa-db-fra.com

Récupération de lignes dans DB2

Je sais que dans DB2 (en utilisant la version 9.7), je peux sélectionner les 10 premières lignes d'une table à l'aide de cette requête:

SELECT * 
FROM myTable
ORDER BY id
FETCH FIRST 10 ROWS ONLY

Mais comment puis-je obtenir, par exemple, les lignes 11 à 20? Je ne peux pas utiliser la clé primaire ou l'ID pour m'aider ...

Merci d'avance!

14
David Caissy

Voici un exemple de requête qui obtiendra des lignes d'une table contenant des noms d'état, des abréviations, etc.

SELECT *
FROM (
   SELECT stabr, stname, ROW_NUMBER() OVER(ORDER BY stname) AS rownumber
   FROM states
   WHERE stcnab = 'US'
) AS xxx
WHERE rownumber BETWEEN 11 AND 20 ORDER BY stname

Éditer: ORDER BY est nécessaire pour garantir la cohérence de la numérotation des lignes entre les exécutions de la requête.

14
Benny Hill

Vous pouvez également utiliser la compatibilité MYSQL. Il vous suffit d'activer la compatibilité vectorielle pour MYS, puis d'utiliser Limit et Offset dans vos requêtes.

db2set DB2_COMPATIBILITY_VECTOR=MYS
db2stop
db2start
1
AngocA