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

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

WBOY
Freigeben: 2022-01-25 10:37:21
Original
40782 Leute haben es durchsucht

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 <=10“ ist.

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

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.

Wie frage ich die Top 10 Datensätze in Oracle ab?

Wie frage ich die Top 10 Datensätze in der Tabelle in Oracle ab?

  select *
  from test
  where rownum <=10
Nach dem Login kopieren

Das Folgende ist eine Einführung in rownum

Die Verwendung von rownum und row_number() over()

ROWNUM ist eine von Oracle bereitgestellte Pseudospalte ab 8. Sie nummeriert die Ergebnisse von SQL, immer beginnend bei 1, üblich Der Zweck besteht darin, die Paging-Ausgabe zu verwenden.

Zum Beispiel

  SELECT *
  FROM torderdetail a
  WHERE ROWNUM <= 10
Nach dem Login kopieren

Diese Anweisung dient der Ausgabe der ersten 10 Datensätze. Ihr Zweck ähnelt hier dem von SQL Server, aber rownum sollte für die Ausgabe des angegebenen Zahlenbereichs leistungsfähiger sein

  SELECT *
  FROM (SELECT a.*, ROWNUM rn
  FROM torderdetail a)
  WHERE rn >= 10 AND rn <= 20
Nach dem Login kopieren

Diese Anweisung dient zur Ausgabe des 10. bis 20. Datensatzes. Der Grund, warum rownum rn hier verwendet wird, besteht darin, rownum in eine Instanz umzuwandeln, da rownum selbst nur die Vergleichsmethode <= verwenden und nur in eine reale konvertiert werden kann Spalte, so dass der Vergleich von >= 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
Nach dem Login kopieren

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!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage