我们可以从SQL Server中选择Top 10或Select Top 'N'行。
但是有没有办法跳过top结果中的第一行呢?
我的意思是我从select top 5得到结果,然后我跳过第一行,只得到接下来的4行?
发布于 2011-08-21 19:14:39
您可以使用OVER子句和排名函数。您不能直接对此进行过滤,因此您需要使用子查询或公用表表达式,下面的示例使用后者。
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)中,将使用OFFSET和FETCH关键字对分页提供更好的支持。
发布于 2011-08-21 19:12:34
你可以这样做:
SELECT
*
FROM (
SELECT
row_number() OVER (ORDER BY ID DESC) AS [rownum],
*
FROM
tbl
) T
WHERE
rownum BETWEEN (2) AND (5)更新:
更新为具有您的值。
更新2:
更正了缺少子查询的错误。感谢Chris Diver指出了这一点。
发布于 2011-08-21 19:11:03
您正在寻找的是术语分页。像这样:http://www.15seconds.com/issue/070628.htm
https://stackoverflow.com/questions/7137889
复制相似问题