Sql 从表中选择除最后一行之外的前5行

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

我需要从表中选择最后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 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作为答案,因为它将为未来的读者提供清晰的答案。