SQL选择底部记录

时间:2020-03-05 18:52:50  来源:igfitidea点击:

我有一个查询,希望在其中检索最早的X记录。目前,我的查询如下所示:

SELECT Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate DESC

我知道通常我会删除'DESC'关键字来切换记录的顺序,但是在这种情况下,我仍然希望首先使用最新项对记录进行排序。

因此,我想知道是否有任何方法可以执行此查询,以使我得到的最旧的X项已排序,使得最新的项排在第一位。我还应该补充说,我的数据库存在于SQL Server 2005中。

解决方案

回答

为什么不只使用子查询?

SELECT T1.* 
FROM
(SELECT TOP X Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate) T1
ORDER BY CreatedDate DESC

回答

嵌入查询。当我们以升序排列(即最旧的)时,将顶部的x取下,然后以降序重新排序...

select * 
from 
(
    SELECT top X Id, Title, Comments, CreatedDate
    FROM MyTable
    WHERE CreatedDate > @OlderThanDate
    ORDER BY CreatedDate 
) a
order by createddate desc