Heim  >  Artikel  >  Datenbank  >  So fragen Sie die ersten 10 Datensätze in Oracle ab

So fragen Sie die ersten 10 Datensätze in Oracle ab

WBOY
WBOYOriginal
2022-01-25 10:37:2140494Durchsuche

In Oracle können Sie die where-Klausel mit rownum verwenden, um die ersten zehn Datensätze abzufragen. Die where-Klausel wird verwendet, um die Bedingungen der Abfrage einzuschränken, und rownum wird verwendet, um die Gesamtzahl der für die Abfrage zurückgegebenen Zeilen zu begrenzen Die Syntax lautet „wählen Sie * aus dem Tabellennamen aus, wobei Zeilennummer fff4cdc362ebbfe22f2e873c931827e7= durchgeführt wurde.

 In praktischen Anwendungen ist es oft erforderlich, zuerst die Datensätze zu sortieren und dann Rownum abzurufen. Im Allgemeinen gibt es eine Diskussion über das Abrufen von Rownum In den letzten 10 Datensätzen hat jemand eine solche Anweisung abgegeben

rrree

Der Grund, warum eine solche Anweisung erscheint, ist hauptsächlich Effizienzüberlegungen. Die vorherige Anweisung besteht darin, die gesamte Tabelle zu scannen und dann 10 Datensätze abzurufen, die letztere Anweisung scannt nicht die gesamte Tabelle, sondern ruft nur 10 Datensätze ab. Offensichtlich ist die Effizienz der letztgenannten Anweisung viel höher.

Warum gibt es dann einen Streit? Der Streit liegt in der Reihenfolge der Ausführung. Sollten wir zuerst eine Sortierung durchführen, um 10 Datensätze zu erhalten, oder sollten wir 10 Datensätze erhalten und dann sortieren? Wenn man die beiden Reihenfolgen herausnimmt, sind die Ergebnisse völlig gegensätzlich. Wenn man zuerst 10 Datensätze herausnimmt und dann 10 Datensätze herausnimmt, werden die ersten 10 Datensätze herausgenommen. Für diese Aussage wird allgemein angenommen, dass die Ausführungsreihenfolge darin besteht, zuerst 10 Datensätze abzurufen und sie dann zu sortieren. Diese Aussage sollte also ein Fehler sein. Dies ist jedoch nicht der Fall. Die Ausführungsreihenfolge dieser Anweisung bezieht sich auf das Feld „Order by“. ) und das Sortierfeld Wenn es sich nicht um PK handelt, werden zuerst 10 Elemente entnommen und dann sortiert. Zu diesem Zeitpunkt weicht das Ergebnis von den Anforderungen ab, sodass die zweite Schreibweise sicherstellen muss, dass das Ergebnis beim Sortieren des Felds korrekt ist ist der Primärschlüssel.

 Die Analysefunktion Row_number() over() wird seit 9I bereitgestellt. Ihr allgemeiner Zweck ähnelt rownum.

 Die allgemeine Schreibmethode row_number() over(order by order_date desc) generiert die gleiche Reihenfolge wie die rownum-Anweisung, und die Effizienz ist dieselbe (für die rownum-Anweisung, die auch order by hat), also in diesem Fall die beiden Verwendungen sind gleich.

 Um die letzten 10 Datensätze nach der Gruppierung zu übernehmen, kann rownum dies derzeit nur mit row_number() erreichen (Partition nach Gruppierungsfeldreihenfolge nach Sortierfeld), um beispielsweise die Gruppierungsnummerierung zu erreichen Letzte 10 Bestelldatensätze jedes Tages im letzten Monat

rrree

Eine alternative Verwendung von Rownum. Manchmal stoßen wir auf diese Anforderung und benötigen die Ausgabe aller Tage des Monats. Viele Leute werden verärgert sein, weil es keine solche Tabelle gibt die Datenbank. Wie werden alle Tage eines Monats ausgegeben? Verwenden Sie Rownum, um das Problem zu lösen:

  SELECT *
  FROM (SELECT a.*
  FROM torderdetail a
  ORDER BY order_date DESC)
  WHERE ROWNUM <= 10

Empfohlenes Tutorial: „

Oracle Video Tutorial

Das obige ist der detaillierte Inhalt vonSo fragen Sie die ersten 10 Datensätze in Oracle ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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