SQL选择底部记录

时间:2008-09-13 21:11:18

标签: sql sql-server tsql

我有一个查询,我希望检索最旧的X记录。目前我的查询类似于以下内容:

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

我知道通常我会删除'DESC'关键字以切换记录的顺序,但在这种情况下,我仍然希望获得最先用最新项目订购的记录。

所以我想知道是否有任何方法可以执行此查询,以便我将最旧的X项目排序,以便最新的项目是第一个。我还应该补充一点,我的数据库存在于SQL Server 2005上。

2 个答案:

答案 0 :(得分:22)

为什么不使用子查询?

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

答案 1 :(得分:1)

嵌入查询。按升序排序(即最旧的)时,取上面的x,然后按降序重新排序......

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