1

我需要从表中选择最后 5 行,除了 MS SQL Server 中的最后一条记录。

换句话说:

SELECT TOP 5 * 
FROM table 
ORDER BY column DESC 

但不考虑此选择中的表最后一条记录。

我怎样才能做到这一点?

4

1 回答 1

0

SQL 小提琴示例

它可以在 MS SQL Server 2012 中使用以下代码轻松实现:

BEGIN

  DECLARE
    @OFFSET int = 1,
    @LIMIT int = 5

  -- SQL Server 2012+
  SELECT id, name 
  FROM t 
  ORDER BY name DESC -- DESC because you want the list upside down
  OFFSET @OFFSET ROWS -- skipped rows
  FETCH NEXT @LIMIT ROWS ONLY -- number of rows

END;


对于较旧的 SQL Server 版本,请使用:

BEGIN

  DECLARE
    @OFFSET int = 1,
    @LIMIT int = 5

  -- SQL Server 2008
  ;WITH cte AS
  (
    SELECT
      id,
      name,
      ROW_NUMBER() OVER (ORDER BY name DESC) AS RowNum -- DESC because you want the list upside down
  FROM t
  )
  SELECT id, name
  FROM cte
  WHERE RowNum > @OFFSET
    AND RowNum <= @OFFSET + @Limit

END
于 2014-09-16T00:24:04.877 回答