Halihallo Gerold
SELECT
TOP 10 *
FROM
(
SELECT TOP 20 *
FROM table
ORDER BY ID ASC
)
ORDER BY ID DESCIch glaube so geht es nicht. Du selektierst die ersten 20 Datensätzte und von denen selektierst Du die ersten 10, welche Du dann umdrehst. Gesamt gesehen ist das SELECT TOP 10 * .......DESC.
Oder irre ich mich?
Glaube ich, ja. Ich kenne mich mit MS SQL praktisch gar nicht aus,
könnte gut sein, dass ich irre; obwohl ich dies in diesem
Zusammenhang für unwahrscheinlich halte.
Das Prinzip sollte verstanden worden sein. Zuerst wird die ID
aufsteigend sortiert, davon die ersten 20 selektiert. Im Mainquery
wird die ganze Geschichte dann "rückwärts" sortiert, sodass die
letzten der 20 Einträge am Anfang stehen und davon dann 10 genommen.
Somit haben wir die Datensätze 10-20.
Deine Aussage würde implizieren, dass die TOP-Anweisung vor dem
ORDER BY käme, also Priorität hat. Das wäre IMHO unlogisch, denn die
Selektion kommt sinnvollerweise nach einer Gruppierung oder
Sortierung. Falls ich recht habe, sollte der Query von oben durchaus
richtig funktionieren.
Ich bin mir sogar sicher, dass ich recht habe :-)
Sogar zu 100% denn alles andere würde mein kleines Weltbild von SQL
zur Strecke bringen und mir einen weiteren Grund liefern, M$
zu "hassen" :-)
Viele Grüsse
Philipp