在我的数据库中,我使用Top 101过滤我的记录。我的目标是获取在我的过滤列表中返回的最后一个ID。
有没有办法在单个语句中使用我的SQL命令?
SELECT TOP 101 Id FROM Messages WHERE Validation = 2 AND Shown > 0 ORDER BY Id DESC
从这个列表中我需要最后一个条目。
如何在单个查询中获取此内容?
谢谢。
答案 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