Oracle ORDER BY und ROWNUM effizient nutzen
In Oracle bietet die ROWNUM-Pseudospalte eine Möglichkeit, bestimmte Zeilen aus einer Ergebnismenge basierend auf abzurufen ihre Reihenfolge. Die Verwendung von ROWNUM mit ORDER BY kann jedoch zu unerwarteten Ergebnissen führen.
Um den neuesten Datensatz aus einer Tabelle abzurufen, wird in SQL Server häufig die folgende SQL-Abfrage verwendet:
SELECT TOP 1 * FROM RACEWAY_INPUT_LABO ORDER BY t_stamp DESC
Allerdings , in Oracle, wenn Sie diesen Ansatz mit ROWNUM wie in der folgenden Abfrage verwenden:
SELECT * FROM raceway_input_labo WHERE rownum <= 1 ORDER BY t_stamp DESC
ruft den ältesten Datensatz anstelle des neuesten ab. Dies liegt daran, dass ROWNUM in Oracle vor ORDER BY ausgewertet wird.
Um den neuesten Datensatz mithilfe von Oracles ROWNUM effektiv abzurufen, verwenden Sie Unterabfragen wie folgt:
SELECT * FROM (SELECT * FROM raceway_input_labo ORDER BY t_stamp DESC) WHERE rownum <= 1
Dieser Unterabfrageansatz stellt sicher, dass die ORDER BY wird zuerst angewendet, was zur gewünschten Ausgabe führt.
Alternativ kann eine vielseitigere Lösung, die sowohl in SQL Server als auch in Oracle funktioniert, mit implementiert werden die Funktion row_number():
select ril.* from (select ril.*, row_number() over (order by t_stamp desc) as seqnum from raceway_input_labo ril ) ril where seqnum = 1
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von „ORDER BY' und „ROWNUM' effizient die oberste Zeile aus einer Oracle-Tabelle abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!