Sql 从表中选择除最后一行之外的前5行
我需要从表中选择最后5行,MS SQL Server中的最后一条记录除外 换言之:Sql 从表中选择除最后一行之外的前5行,sql,sql-server,Sql,Sql Server,我需要从表中选择最后5行,MS SQL Server中的最后一条记录除外 换言之: SELECT TOP 5 * FROM table ORDER BY column DESC 但不考虑此选择中的表最后一条记录 我该怎么做 可以使用以下代码在MS SQL Server 2012中轻松实现: 开始 声明 @偏移量int=1, @极限int=5 -SQL Server 2012+ 选择id、名称 从t 按名称DESC-DESC排序,因为您希望列表颠倒 偏移@偏移行-跳过的行 FETCH NE
SELECT TOP 5 *
FROM table
ORDER BY column DESC
但不考虑此选择中的表最后一条记录
我该怎么做
可以使用以下代码在MS SQL Server 2012中轻松实现:
开始
声明
@偏移量int=1,
@极限int=5
-SQL Server 2012+
选择id、名称
从t
按名称DESC-DESC排序,因为您希望列表颠倒
偏移@偏移行-跳过的行
FETCH NEXT@LIMIT ROWS ONLY-行数
终止
对于较旧的SQL Server版本,请使用:
开始
声明
@偏移量int=1,
@极限int=5
-SQL Server 2008
;以cte为例
选择
身份证件
名称
按名称排序的行数DESC为RowNum-DESC,因为您希望列表颠倒
从t
选择id、名称
来自cte
其中RowNum>@OFFSET
如果使用SQLServer 2012,请参阅Somnath Muluk的答案。我已经发布了@Mark suggestion作为答案,因为它将为未来的读者提供清晰的答案。