Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MySql LIMIT 1, 10 versus SQL Server

2 réponses
Avatar
skneife
J'utilise de la pagination pour mon site web et j'ai donc besoin de
faire des requ=EAtes sur des plage d'enregistrements, par exemple 1 =E0 1=E0=

puis 11 =E0 20, etc...
Malheureusement avedc la commande de SQL Server TOP je n'ai pas
d'offset poure sp=E9cifier le d=E9but et la fin.
Je recherche en fait l'=E9quivalent en MySQL LIMIT 1,x.

Quelqu'un a t'il une id=E9e lumineuse sur ce point ?
Merci.

Sam

2 réponses

Avatar
Gilles TOURREAU [MVP]
Le Fri, 11 Jan 2008 17:49:51 +0100, a écrit:

J'utilise de la pagination pour mon site web et j'ai donc besoin de
faire des requêtes sur des plage d'enregistrements, par exemple 1 à 1à
puis 11 à 20, etc...
Malheureusement avedc la commande de SQL Server TOP je n'ai pas
d'offset poure spécifier le début et la fin.
Je recherche en fait l'équivalent en MySQL LIMIT 1,x.

Quelqu'un a t'il une idée lumineuse sur ce point ?
Merci.

Sam



Bonjour,

Il est possible de faire la pagination avec TOP mais sous SQL Server 2005
il existe une fonction ROW_NUMBER() qui permet de numéroter les n°
d'enregistrements retournés.
Extrait d'un article de Frédéric BROUARD :
http://sqlpro.developpez.com/SQL_Server_2K5/N1.php

***********

1) Pagination par bloc de ligne controlé (les lignes retournées sont
controlées dans le filtre WHERE) :
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY USR_ID) RNUM,
USR_ID, USR_NOM, USR_PRENOM,
FROM T_UTILISATEUR_USR) T
WHERE RNUM BETWEEN 10 AND 19
Ici on retourne les lignes numérotées 10 à 19.

2) Pagination par nombre de page (le nombre de page est fixé, le nombre de
ligne inconnu, la page retournée est contrôlée dans le filtre WHERE) :
SELECT *
FROM (SELECT NTILE(25) OVER(ORDER BY USR_ID) NTL,
USR_ID, USR_NOM, USR_PRENOM,
FROM T_UTILISATEUR_USR) T
WHERE NTL = 7
Ici on fixe le nombre de page à 25 et l'on retourne la page 7

***********

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
sam
"Gilles TOURREAU [MVP]" a écrit dans le message de
> Il est possible de faire la pagination avec TOP mais sous SQL Server 2005
il existe une fonction ROW_NUMBER() qui permet de numéroter les n°
d'enregistrements retournés.
Extrait d'un article de Frédéric BROUARD :
http://sqlpro.developpez.com/SQL_Server_2K5/N1.php



Merci beaucoup pour tous les exemples qui répondent correctement à ma
demande.

Sam