我需要从表中选择最后 5 行,除了 MS SQL Server 中的最后一条记录。
换句话说:
SELECT TOP 5 *
FROM table
ORDER BY column DESC
但不考虑此选择中的表最后一条记录。
我怎样才能做到这一点?
我需要从表中选择最后 5 行,除了 MS SQL Server 中的最后一条记录。
换句话说:
SELECT TOP 5 *
FROM table
ORDER BY column DESC
但不考虑此选择中的表最后一条记录。
我怎样才能做到这一点?
它可以在 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