T-SQL跳取存储过程
我在这个网站上似乎运气不太好,但我永远都是乐观主义者,我会继续努力。 我有两个表、日记账和ArticleCategories,它们使用此查询联接:T-SQL跳取存储过程,sql,sql-server,tsql,pagination,Sql,Sql Server,Tsql,Pagination,我在这个网站上似乎运气不太好,但我永远都是乐观主义者,我会继续努力。 我有两个表、日记账和ArticleCategories,它们使用此查询联接: SELECT Journals.JournalId, Journals.Year, Journals.Title, ArticleCategories.ItemText FROM Journals LEFT OUTER JOIN ArticleCategories ON J
SELECT Journals.JournalId,
Journals.Year,
Journals.Title,
ArticleCategories.ItemText
FROM Journals
LEFT OUTER JOIN ArticleCategories
ON Journals.ArticleCategoryId = ArticleCategories.ArticleCategoryId
有人能告诉我如何把它重新写进一个Skip,Take查询吗。
换句话说,我希望它跳过前n条记录,然后取下n条。
我认为ROW_编号涉及某个地方,但我不知道在这种情况下如何使用它
我怀疑我运气不好的原因是我发现很难解释我想做什么。
如果我的问题不清楚,请毫不犹豫地告诉我哪里出了问题,我很乐意再试一次。
也许我还应该提到,我正试图将其放入一个存储过程中。
非常感谢。
非常感谢,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
对于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
除了@Martin Smith的正确答案外,当使用
分组依据时,如果没有订单依据,则不能使用偏移提取
:
GROUP BY [cols]
ORDER BY [col] ASC|DESC
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY
下面给出了“偏移量”附近不正确的语法:
前n条记录
-按什么顺序排列?很好!我忘了说它需要订购什么东西。请允许我再次向您提出要求,并询问如何包括按期刊的订单。年度?非常感谢Martin。很抱歉我之前的评论Martin。如果我更仔细一点的话,我会注意到你已经包括了一份订单声明。再次感谢你,太棒了!谢谢你,马丁,效果很好。非常感谢。
GROUP BY [cols]
--ORDER BY [col] ASC|DESC
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY