lundi 3 mars 2008

Oracle : équivalent de la clause limit de MySQL

La clause LIMIT de MySQL est très pratique pour tout ce qui concerne la pagination... Seul petit problème, elle n'existe pas sous Oracle.

Voici donc un squelette d'une requête qui vous permettra d'avoir le même comportement :

SELECT *
FROM ( SELECT /*+ FIRST_ROWS(50) */
a.*, ROWNUM rnum
FROM (SELECT ROWNUM, user_id FROM user) a
WHERE ROWNUM <= 31050
)
WHERE
rnum >= 31000

Cette requête vous permet de sélectionner uniquement les "user_id" des enregistrements 31000 à 31050 de la table user...
Attention le commentaire est apparemment utile à Oracle pour améliorer le temps d'exécution...