Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe von „ORDER BY' und „ROWNUM' effizient die oberste Zeile aus einer Oracle-Tabelle abrufen?

Wie kann ich mithilfe von „ORDER BY' und „ROWNUM' effizient die oberste Zeile aus einer Oracle-Tabelle abrufen?

Susan Sarandon
Freigeben: 2025-01-07 07:35:41
Original
993 Leute haben es durchsucht

How to Efficiently Retrieve the Top Row from an Oracle Table Using `ORDER BY` and `ROWNUM`?

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage