Se connecter avec
S'enregistrer | Connectez-vous

[HELP]équivalent de LIMIT sur SQL Server

Dernière réponse : dans Programmation

Bonjour
je souhaite utilisé LIMIT dans une requete SQL, genre SELECT blablabla FROM matable WHERE condition ORDER BY champ LIMIT 10,15
Mais c'est pas possible sous SQL Server... :(  Comment je peux faire?
En faisant SELECT TOP 5 * FROM ... j'ai les 5 premiers record, mais je veux avoir le 10eme, 11eme, 12eme, etc jusqu'au XXieme...

Si vous avez une solution....

Merci!

N
Lassé par la pub ? Créez un compte

Bonjour;
J'ai pas pu vérifier ce qu'il ya dans le lien de Flyman30 (j'ai pas pu l'ouvrir :(  ) mais vous pouvez utiliser TOP Nombre
Ex : SELECT TOP 10 id_person FROM person . Cette requête va renvoyer les 10 premier ID de la table person.

Pourquoi pas de deterrage ? Je suis en 2010, j'ai la même question, ce sujet est l'un des premiers dans le résultat google et le seul lien de réponse donné en 2003 n'est plus valide.
Du coup les deux réponses donné en 2008 qui ont été censurés ne sont pas lisibles et l'ensemble du sujet est inutile....

Répondre à un sujet 5 ans plus tard c'est pas forcément ridicule... Internet ca ne vit pas que 6 mois.
Expert Programmation

Bonjour hakanai,

Le déterrage n'est pas interdit. Sinon, au bout de telle période, les sujets seraient fermés automatiquement. Il se trouve que Sacha, auteur en tout et pour tout de deux messages de pub, est venu ici non pas pour donner une solution, mais pour faire de la pub pour son site.

Quelle est donc ta question ? Juste un équivalent de LIMIT sur SQL Server !
Et bien la solution est triviale, il est même dommage que tu ne l'ai pas trouvé tout seul, si tu connais la fonction TOP. Or ziedbg en parle. Donc pas d'excuse. (Il faut juste un peu d'astuce ;)  )

------------------------------

Allez, voici la soluce.

Prendre les éléments 5 à 10, c'est sélectionner les 10 premiers, puis inverser le tri sur ce résultat et prendre les 5 premiers. On peut ajouter un tri supplémentaire pour remettre les choses dans l'ordre logique :spamafote: 

En SQLServer, ça donne :
  1. SELECT * FROM ( SELECT TOP 5 * FROM ( SELECT TOP 10 * FROM ma_table ORDER BY 1 ) ORDER BY 1 DESC ) ORDER BY 1


Ça répond à tes deux questions ?

Bonjour zeb,
c'est exactement ce que j'ai voulu faire pour selectionner une plage de donnée et cela ne marche pas sur sql server ...

Je fais:
  1. SELECT TOP 10 FROM (
  2. MA SOUS REQUETE ORDER BY DATE DESC EN SELECT TOP 20 )
  3. ORDER BY DATE ASC


Et l'erreur qui ressort est la suivante :

Server: Msg 156, Level 15, State 1, Line 1
Syntaxe incorrecte vers le mot clé 'FROM'.
Server: Msg 156, Level 15, State 1, Line 6
Syntaxe incorrecte vers le mot clé 'ORDER'.
Lassé par la pub ? Créez un compte