我们可以从SQL Server中选择Top 10或Select Top’N’行.
但有没有办法从顶部的结果中跳过第一行?
我的意思是我从选择前5位获得结果,然后我跳过第一行并且只得到接下来的4行?
解决方法
您可以使用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关键字将更好地支持分页.