7
votes

Skip Premier rang dans SQL Server 2005?

Nous pouvons sélectionner top 10 ou Sélectionnez le haut 'n' n ' à partir de SQL Server.

mais y a-t-il un moyen de sauter la première rangée à partir du résultat de haut ??

Je veux dire que je reçois le résultat de Sélectionnez le top 5 , puis je saute la première rangée et obtenez seulement les 4 lignes suivantes?


0 commentaires

4 Réponses :


2
votes

Ce que vous recherchez est le terme paging. Comme ceci: http://www.15seconds.com/issue/070628.htm < / p>


0 commentaires

5
votes

Vous pouvez faire quelque chose comme ceci: xxx

update:

mise à jour pour avoir vos valeurs.

Mise à jour 2:

Erreur corrigée avec une sous-requête manquante. Merci à Chris Diver pointant cette sortie.


2 commentaires

ya. J'ai corrigé tout en exécutant dans mon SQL mais j'ai oublié de le mentionner ici. :-)


J'ai utilisé cela dans une autre sous-requête et cela a fonctionné super! L'autre ; avec ... solution ne fonctionne pas dans ce cas.



2
votes

quelque chose comme ceci:

-- Test table
declare @T table(ID int);

-- Add test data
insert into @T 
select 1 union all
select 2 union all
select 3 union all
select 4 union all
select 5 union all
select 6;

-- Query using row_number() over(...)
-- to get rows 2 - 5
select T.ID
from (
        select *,
               row_number() over(order by ID) as rn
        from @T       
     ) as T
where T.rn between 2 and 5;


0 commentaires

10
votes

Vous pouvez utiliser la clause sur et une fonction de classement. Vous ne pouvez pas filtrer sur ce directement afin de nous avoir besoin d'une sous-requête ou d'une expression de table commune, l'exemple ci-dessous utilise ce dernier. XXX

Il y aura un meilleur support pour la pagination dans le prochain Version de SQL Server (Codename Denali) avec le Décalse et Fetch Mots-clés.


2 commentaires

Génial ... je n'ai pas pensé dans cette direction. J'essayais de choisir avec le top 5 d'ici que j'essayais de sauter le premier avec le mot "sauter" ... merci beaucoup ... :-)


+1 Pour mentionner, c'est une fonction de classement - qui rend cette réponse encore plus utile