【发布时间】:2016-10-13 09:11:49
【问题描述】:
SET @LatestRowNum = 2;
WITH OrderedOrders AS
(
SELECT
ROW_NUMBER() OVER(order by ID desc) AS Rownum,
*
FROM someTable WITH(NOLOCK)
ORDER BY ID DESC
)
SELECT *
FROM
OrderedOrders WHERE Rownum = @LatestRowNum
上面的查询把我扔了
消息 1033,第 15 级,状态 1,第 17 行 ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP、OFFSET 或 FOR XML。
如何实现有时我期待最后一条记录或有时是倒数第二条记录的目标?
【问题讨论】:
-
为什么不直接使用行号呢?
-
您可以在
Rownum的主查询中订购。实际上,您的 CTE 中不需要额外的ORDER BY来使您的ROW_NUMBER()工作,它已经包含在其中。 -
为什么要订购,而您检索的只是一行?
-
@bastos.sergio 我同意你的看法。
标签: sql-server