Предложение ORDER BY используется для упорядочения RESULT SET по указанному столбцу.
Ваш запрос Select TOP 10 * from FooTable ORDER BY X DESC
, предполагая, что X является меткой времени, не будет возвращать последние вставленные 10 строк.Он вернет первые 10 строк, сохраненные (в любом порядке) в базе данных, а затем вернет результирующий набор из 10 таких строк в порядке убывания.Следовательно, ваш подзапрос должен быть изменен на
Select TOP 10 * from (Select * from FooTable ORDER BY DESC) as T
Это должно соответствовать вашему первому требованию.Затем вы можете использовать этот набор результатов в качестве псевдонима для определения вашего окончательного порядка сортировки.
Я надеюсь, что правильно вас понял, когда вы говорите: " Я пытаюсь получить первые N записей (когда заказано какой-то колонкой X)"