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!
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.
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