与SQL Server中的TOP相反

时间:2015-05-17 07:41:58

标签: sql sql-server

我需要从表中检索最后几个条目。我可以使用以下方法检索它们:

SELECT TOP n * 
FROM table 
ORDER BY id DESC 

我到处寻找,这是我能找到的唯一答案,但这样我就会以相反的顺序得到它们。我需要它们的顺序与它们在表中的顺序相同,因为它适用于消息传递接口。

2 个答案:

答案 0 :(得分:5)

使用派生表:

select id, ...
from
(
 select top n id, ...
 from t
 order by id desc
) dt
order by id

答案 1 :(得分:0)

我建议你像这样使用ROW_NUMBER()

SELECT *
FROM (
    SELECT 
        *, ROW_NUMBER() OVER (ORDER BY id DESC) AS RowNo
    FROM 
        yourTable
     ) AS t
WHERE
    (RowNO < @n)
ORDER BY
    id