Pet*_*ies 22 sql t-sql sql-server pagination
我似乎在这个网站上没有太多运气,仍然永远是乐观主义者,我会继续努力.我有两个表,Journals和ArticleCategories使用此查询加入:
SELECT Journals.JournalId,
Journals.Year,
Journals.Title,
ArticleCategories.ItemText
FROM Journals
LEFT OUTER JOIN ArticleCategories
ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何重写这个使它成为一个Skip,Take查询.换句话说,我希望它跳过前n个记录,然后取下一个n.我认为ROW_NUMBER涉及某个地方,但在这种情况下我无法弄清楚如何使用它.
我怀疑没有太多运气的原因是我发现很难解释我想要做什么.如果我的问题不明确,请不要犹豫,告诉我哪里出错了,我很乐意再试一次.也许我还应该提一下,我试图把它放在一个存储过程中.非常感谢.非常感谢,
Mar*_*ith 60
对于2005/2008/2008 R2
;WITH cte AS
(
SELECT Journals.JournalId,
Journals.Year,
Journals.Title,
ArticleCategories.ItemText,
ROW_NUMBER() OVER
(ORDER BY Journals.JournalId,ArticleCategories.ItemText) AS RN
FROM Journals LEFT OUTER JOIN
ArticleCategories
ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId
)
SELECT JournalId,
Year,
Title,
ItemText
FROM cte
WHERE RN BETWEEN 11 AND 20
Run Code Online (Sandbox Code Playgroud)
对于2012年,这更简单
SELECT Journals.JournalId,
Journals.Year,
Journals.Title,
ArticleCategories.ItemText
FROM Journals
LEFT OUTER JOIN ArticleCategories
ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId
ORDER BY Journals.JournalId,
ArticleCategories.ItemText
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)