Вопрос
У меня есть запрос, в котором я хочу получить самые старые 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