SQL-Select-Bottom Datensätze
-
09-06-2019 - |
Frage
Ich habe eine Abfrage, wo ich möchte die älteste X Datensätze abzurufen. Derzeit meine Abfrage ist in etwa wie folgt:
SELECT Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate DESC
Ich weiß, dass normalerweise würde ich die ‚DESC‘ Schlüsselwort entfernen Sie die Reihenfolge der Datensätze jedoch in diesem Fall wechseln Ich möchte noch Datensätze mit den neuesten Artikel bestellt zuerst erhalten.
Also ich möchte wissen, ob es irgendwelche Mittel zur Durchführung dieser Abfrage ist so, dass ich die ältesten X Artikel so sortiert bekommen, dass das neueste Element zuerst ist. Ich möchte auch hinzufügen, dass meine Datenbank existiert auf SQL Server 2005.
Lösung
Warum nicht einfach eine Unterabfrage verwenden?
SELECT T1.*
FROM
(SELECT TOP X Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate) T1
ORDER BY CreatedDate DESC
Andere Tipps
einbetten die Abfrage. Sie nehmen die oben x wenn aufsteigend sortiert (das heißt die älteste) und dann neu sortiert werden diejenigen in absteigender Reihenfolge ...
select *
from
(
SELECT top X Id, Title, Comments, CreatedDate
FROM MyTable
WHERE CreatedDate > @OlderThanDate
ORDER BY CreatedDate
) a
order by createddate desc