Mettre en œuvre la pagination (skip / prendre) la fonctionnalité avec cette requête
J'ai essayé de comprendre un peu plus sur la façon de mettre en œuvre la pagination personnalisée en SQL, par exemple la lecture des articles comme celui-ci.
J'ai la requête suivante, qui fonctionne parfaitement. Mais je voudrais implémenter d'échange avec celui-ci.
SELECT TOP x PostId FROM ( SELECT PostId, MAX (Datemade) as LastDate
from dbForumEntry
group by PostId ) SubQueryAlias
order by LastDate desc
Qu'est-ce que je veux
J'ai des messages du forum, avec les entrées liées. Je veux obtenir les postes avec les dernières entrées ajoutées, afin que je puisse sélectionner le récemment débattu postes.
Maintenant, je veux être en mesure d'obtenir le "top 10 à 20 récemment active postes", au lieu de "top 10".
Qu'ai-je essayé
J'ai essayé de mettre en oeuvre la LIGNE des fonctions comme l'une dans l'article, mais vraiment à pas de chance.
Toutes les idées sur la façon de la mettre en œuvre?
Vous devez vous connecter pour publier un commentaire.
Dans SQL Server 2012 il est très très facile
Si nous voulons passez COMMANDE PAR nous pouvons utiliser
(Je préfère marque comme un hack, mais il est utilisé, par exemple, par NHibernate. Pour utiliser à bon escient ramassé colonne de la COMMANDE PAR est de manière préférée)
pour répondre à la question:
De nouveaux mots-clés
offset
etfetch next
(suivant la norme SQL) ont été introduits.Mais je suppose que vous n'êtes pas à l'aide de SQL Server 2012, droit? Dans la version précédente, c'est un peu (un peu) difficile. Voici la comparaison et des exemples pour toutes les versions de SQL server: ici
Donc, cela pourrait fonctionner dans SQL Server 2008:
WHERE RowNumber >= @Start AND RowNumber < @End
pour obtenir les 1000 premières lignes si@Start
est 0 et@End
est de 1000?WHERE RowNumber > @Start AND RowNumber <= @End
Pour ce faire, dans SQL Server, vous devez commander la requête par une colonne, de sorte que vous pouvez spécifier les lignes que vous voulez.
Exemple:
Et vous ne pouvez pas utiliser le "TOP" mot-clé lors de cette opération.
Vous pouvez en apprendre plus ici:
https://technet.microsoft.com/pt-br/library/gg699618%28v=sql.110%29.aspx
SQL 2008
Radim Köhler la réponse de travaux, mais en voici une version plus courte:
Source: https://forums.asp.net/post/4033909.aspx
l'utiliser dans la fin de votre syntaxe select. =)
Vous pouvez utiliser des requêtes imbriquées pour la pagination comme suit:
La pagination à partir de 4 Ligne 8 Ligne où CustomerId est clé primaire
SELECT Top 5 * à PARTIR de Clients
LORSQU'un Pays= "Allemagne" ET CustomerId not in (SELECT Top 3 CustomerID DE Clients
LORSQU'un Pays='Allemagne' ordre de la ville)
commande par la ville;