سؤال
لدي استفسار حيث أرغب في استرداد أقدم سجلات 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
لا تنتمي إلى StackOverflow