从第n行开始选择n行数

The*_*per -4 sql t-sql sql-server

这里的SQL-noobie想要将以下存储过程修改为从指定行开始选择指定行数的行.例如,我想从第10行开始选择5行,即10,11,12,13,14,15.

这是我的SP看起来像atm:

SELECT Posts.Slug, Comments.commentId, Comments.[date], Comments.name, Comments.[text]
FROM Comments 
INNER JOIN Posts ON Comments.postId = Posts.Id
WHERE Comments.approved = 0
Run Code Online (Sandbox Code Playgroud)

我不需要按顺序阅读结果,以便重要.

谢谢!

Dan*_*eal 5

在Maurice提到的SQL Server 2005/2008中,您需要使用行号.遗憾的是,LIMIT语法不起作用.查询将如下所示(假设您要按日期排序)

WITH numbered AS
(
    SELECT 
       Posts.Slug, 
       Comments.commentId, 
       Comments.[date],
       Comments.name, Comments.[text],  
       ROW_NUMBER() OVER (ORDER BY date) as rownum
    FROM Comments 
    INNER JOIN Posts ON Comments.postId = Posts.Id
    WHERE Comments.approved = 0
) 
SELECT * FROM numbered WHERE rownum BETWEEN @startrow AND @endrow
Run Code Online (Sandbox Code Playgroud)

上面假设@startrow和@endrow是传递到存储过程的参数.