CommentID Name Replies OrderID
313 Ed dlfkndl sdknldgf dlffdg 496
313 James sdsflsdf snflsf sfnslf sfnklsdf 499
313 Jeff sdsflsdf snflsf sfnslf sfnklsdf 500
313 Alan sdsflsdf snflsf sfnslf sfnklsdf 501
313 William sdflksnfdlsk sdfknslnf slfnks 503
上面有一个示例表,该表按 [OrderID] 升序排列。我想取最后一个 表的 3 行也按升序排列,如下所示。
CommentID Name Replies OrderID
313 Jeff sdsflsdf snflsf sfnslf sfnklsdf 500
313 Alan sdsflsdf snflsf sfnslf sfnklsdf 501
313 William sdflksnfdlsk sdfknslnf slfnks 503
在 T-SQL 中执行此操作的确切语法是什么?谢谢... 我尝试想出这个方法,但仍然无法按 asc 顺序获取最后 3 行。
SqlCommand cmd = new SqlCommand("SELECT * FROM [RepTab] WHERE [OrderID] > (SELECT MAX([OrderID]) - 3 FROM [RepTab] WHERE [CommentID]='" + Id + "') ", con);
最佳答案
您还可以使用公用表表达式
编写查询:
With CTE as
( select row_number() over ( partition by CommentID order by OrderID desc) as rownum,
CommentID,
Name,
Replies,
OrderID
From reptab
)
select CommentID,
Name,
Replies,
OrderID
from CTE
where rownum <=3
and CommentID = 313
order by OrderID asc
关于sql - 使用 t-sql 按升序获取最后 3 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25860273/