如何从另一个首选中选择前1名?

时间:2017-06-04 10:33:05

标签: sql sql-server

在我的数据库中,我使用Top 101过滤我的记录。我的目标是获取在我的过滤列表中返回的最后一个ID。

有没有办法在单个语句中使用我的SQL命令?

SELECT TOP 101 Id FROM Messages WHERE Validation = 2 AND Shown > 0 ORDER BY Id DESC

从这个列表中我需要最后一个条目。

如何在单个查询中获取此内容?

谢谢。

2 个答案:

答案 0 :(得分:1)

假设您的代码至少返回101行,那么您可以使用OFFSET/FETCH

SELECT Id
FROM Messages
WHERE Validation = 2 AND Shown > 0
ORDER BY Id DESC
OFFSET 100
FETCH NEXT 1 ROW ONLY;

此ANSI标准构造是在SQL Server 2012中引入的。

答案 1 :(得分:0)

SELECT TOP 1 temp.Id 
from (SELECT TOP 101 Messages.Id FROM Messages WHERE Validation = 2 AND Shown > 0 ORDER BY Messages.Id ASC) as temp