Gibt es eine Möglichkeit, eine Oracle
Abfrage so zu verhalten, als ob sie eine MySQL limit
Klausel enthält ?
In MySQL
kann ich das tun:
select *
from sometable
order by name
limit 20,10
Um die 21. bis 30. Reihe zu erhalten (überspringen Sie die ersten 20, geben Sie die nächsten 10 an). Die Zeilen werden nach dem ausgewählt order by
, so dass es wirklich mit dem 20. Namen alphabetisch beginnt.
In Oracle
, das einzige , was Leute erwähnen ist die rownum
Pseudo-Spalte, aber es wird ausgewertet , bevor order by
, was bedeutet dies:
select *
from sometable
where rownum <= 10
order by name
gibt einen zufälligen Satz von zehn nach Namen geordneten Zeilen zurück, was normalerweise nicht das ist, was ich will. Es ist auch nicht möglich, einen Versatz anzugeben.
ORDER BY
. Das ist der springende Punkt bei der Bestellung. Wenn sich die zugrunde liegenden Daten ändern und sich Ihre Ergebnismenge aufgrund dessen ändert, zeigen Sie dem Benutzer dann die aktualisierten Ergebnisse anstelle veralteter Informationen an. Auch das Staatsmanagement ist eine Plage, die so weit wie möglich vermieden werden sollte. Es ist eine ständige Quelle von Komplikationen und Fehlern. Deshalb wird funktional immer beliebter. Und wann würden Sie wissen, dass die gesamte Ergebnismenge im Speicher abläuft? Im Web können Sie nicht wissen, wann der Benutzer das Web verlässt.