2008-09-13 79 views
10

我有一个查询,我希望检索最旧的X记录。目前我的查询是类似以下内容:SQL选择底部记录

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

我知道,通常我会删除“DESC”关键字来切换记录的顺序,但是在这种情况下我仍然希望得到与所订购的记录最新的项目。

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

回答

22

为什么不直接使用子查询?

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

因此,史诗般的旅程开始...... – Jaydles 2013-10-27 01:54:46

1

嵌入查询。当按升序排列时(即最早的),您可以将x排在最前面,然后按降序重新排序......

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