SQL Select Bottom Records

У меня есть запрос, в котором я хочу получить самые старые записи X. В настоящее время мой запрос выглядит примерно так:

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

Я знаю, что обычно я бы удалял ключевое слово DESC, чтобы переключать порядок записей, однако в этом случае я все же хочу сначала получить записи, упорядоченные с помощью нового элемента.

Итак, я хочу знать, есть ли какие-либо средства для выполнения этого запроса, чтобы я получил самые старые элементы X, отсортированные таким образом, чтобы первый элемент был первым. Я также должен добавить, что моя база данных существует в SQL Server 2005.

Ответ 1

Почему бы просто не использовать подзапрос?

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

Ответ 2

Вставить запрос. Вы берете верхний x при сортировке в порядке возрастания (то есть самый старый), а затем повторно сортируете их в порядке убывания...

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