首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否跳过SQL Server 2005中的第一行?

是否跳过SQL Server 2005中的第一行?
EN

Stack Overflow用户
提问于 2011-08-21 19:05:54
回答 4查看 12.8K关注 0票数 7

我们可以从SQL Server中选择Top 10Select Top 'N'行。

但是有没有办法跳过top结果中的第一行呢?

我的意思是我从select top 5得到结果,然后我跳过第一行,只得到接下来的4行?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-21 19:14:39

您可以使用OVER子句和排名函数。您不能直接对此进行过滤,因此您需要使用子查询或公用表表达式,下面的示例使用后者。

代码语言:javascript
运行
复制
DECLARE @MyTable TABLE 
(
    ID INT,
    Name VARCHAR(15)
);
INSERT INTO @MyTable VALUES (1, 'Alice');
INSERT INTO @MyTable VALUES (2, 'Bob');
INSERT INTO @MyTable VALUES (3, 'Chris');
INSERT INTO @MyTable VALUES (4, 'David');
INSERT INTO @MyTable VALUES (5, 'Edgar');

WITH people AS 
(
    SELECT ID, Name, ROW_NUMBER() OVER (ORDER BY ID) RN
    FROM @MyTable
)
SELECT ID, Name
FROM people
WHERE RN > 1;

在下一个版本的SQL Server (代号Denali)中,将使用OFFSETFETCH关键字对分页提供更好的支持。

票数 10
EN

Stack Overflow用户

发布于 2011-08-21 19:12:34

你可以这样做:

代码语言:javascript
运行
复制
SELECT
    *
FROM (
        SELECT      
            row_number() OVER (ORDER BY ID DESC) AS [rownum],
            *
        FROM
            tbl
) T
WHERE 
    rownum BETWEEN (2) AND (5)

更新:

更新为具有您的值。

更新2:

更正了缺少子查询的错误。感谢Chris Diver指出了这一点。

票数 5
EN

Stack Overflow用户

发布于 2011-08-21 19:11:03

您正在寻找的是术语分页。像这样:http://www.15seconds.com/issue/070628.htm

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7137889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档