Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 14301|Antwort: 1

[Quelle] Der Unterschied zwischen rownum und row_number() in Oracle

[Link kopieren]
Veröffentlicht am 25.09.2017 16:00:21 | | |
row_number()über(Partition nach Kol1 Ordnung nach Kol2) bedeutet, nach Kol2 innerhalb der Gruppe zu sortieren, und der von dieser Funktion berechnete Wert repräsentiert die Ordnungsnummer (die aufeinanderfolgende Eindeutigkeit innerhalb der Gruppe), nachdem jede Gruppe intern sortiert wurde. Der Unterschied zu rownum besteht darin, dass man beim Sortieren von rownum ein schlechtes rownum zur Ergebnismenge hinzufügt und es dann sortiert, während row_number() zuerst sortiert und nach der Hinzufügung der Sortierklausel die Zeilennummer berechnet.

1. Rownum im Orakel

Zur Nummerierung der von der Abfrage zurückgegebenen Zeilen erhält die erste zurückgegebene Zeile eine 1, die zweite Zeile eine 2 und so weiter; dieses Pseudofeld kann verwendet werden, um die Gesamtzahl der von der Abfrage zurückgegebenen Zeilen zu begrenzen, und das Reihentum darf nicht mit dem Namen einer Tabelle vorangestellt werden.

1. Rownum für Abfragebedingungen gleich einem bestimmten Wert

Wenn du den ersten Schüler in der Studententabelle finden willst, kannst du rownum=1 als Bedingung verwenden. Wenn Sie jedoch die Informationen des zweiten Schülers in der Studententabelle finden möchten, können Sie die Daten nicht mit rownum=2 finden. Da Rownum bei 1 beginnt, aber natürliche Zahlen über 1 als falsch gelten, wenn Rownum gleich ja ist, ist es unmöglich, Rownum = n(n>1 natürliche Zahlen zu bestimmen).




2. Rownum für Abfragebedingungen, die größer als ein bestimmter Wert sind

Wenn Sie die Datensätze ab der zweiten Zeile finden möchten, können Sie bei der Verwendung von rownum>2 die Datensätze nicht finden, die folgenden Unterabfragemethoden verwenden, um das Problem zu lösen. Beachten Sie, dass das Rownum in der Unteranfrage ein Alias haben muss, andernfalls wird der Datensatz nicht gefunden, da das Rownum keine Spalte einer Tabelle ist, und wenn kein Alias vorhanden ist, ist es unmöglich zu wissen, ob das Rownum eine Spalte der Unteranfrage oder eine Spalte der Hauptanfrage ist.




3. Rownum für Abfragebedingungen kleiner als einen bestimmten Wert

Wenn du den vorherigen Datensatz des dritten Datensatzes finden willst, kannst du mit Rownum<3 zwei Datensätze erhalten. Offensichtlich denkt rownum, dass der Zustand von rownum < n (natürliche Zahl von (n>1) wahr ist, sodass du den Datensatz finden kannst.




4. Rownum und Reihenfolge

Das Rownum in Oracle ist die Sequenznummer, die beim Abrufen der Daten erzeugt wird, daher müssen Sie darauf achten, wenn Sie die Rowmun-Zeilendaten für die angegebenen sortierten Daten angeben möchten.




ROWNUM-ID-NAME
---------- ------ ---------------------------------------------------
3 200003 Li San
2 200002 Wang Er
1 200001 Zhang Yi
4 200004 Zhao Si

Man kann sehen, dassDas Rownum ist keine Sequenznummer, die durch die Namensspalte generiert wird。 Das System weist die Nummer der Zeile der Datensätze in der Reihenfolge zu, in der sie eingefügt wurden, und die Rowid wird ebenfalls in der Reihenfolge zugewiesen. Um dieses Problem zu lösen, müssen Subqueries verwendet werden




ROWNUM-ID-NAME
---------- ------ ---------------------------------------------------
1 200003 Li San
2 200002 Wang Er
3 200001 Zhang Yi
4 200004 Zhao Si

2. Orakel row_number ()

1、row_number() über (Bestellung von col_1[,col_2 ...])
Laut col_1[,col_2 ...] Sortieren, gibt die sortierte Ergebnismenge zurück und gibt für jede Zeile einen anderen Wert zurück.

2、row_number() über (Teilung nach col_n[,col_m ...] Ordnung nach col_1[,col_2 ...])
Erstens, laut col_n[,col_m ... Gruppierung, und dann in jeder Gruppierung gemäß dem col_1[,col_2 ...] sortieren (aufsteigend) und schließlich die sortierte Ergebnismenge zurückgeben

Oracle row_number() Instanz

1. Verwenden Sie die row_number()-Funktion zur Nummerierung, zum Beispiel



Prinzip: Sortieren Sie zuerst nach PSD und nummerieren Sie danach jedes Datenstück.

2. Sortiere die Reihenfolge in aufsteigender Preisordnung und sortiere jeden Datensatz mit folgendem Code:



3. Zähle die Anzahl der kürzlich von jedem Kunden aufgegebenen Bestellungen.




4. Bei Verwendung von Fensteröffnungsfunktionen wie over erfolgt die Ausführung des Gruppierens und Sortierens in über später als die Ausführung von "where, group by, order by".



Der obige Code führt zuerst die Where-Klausel aus und nummeriert dann jeden Datensatz nach der Ausführung.

3. Der Unterschied zwischen row_number () und Rownum

Beim Sortieren mit Rownum fügt man dem Ergebnisset ein schlampiges Rownum hinzu und sortiert es, während row_number() zuerst sortiert und nach Hinzufügen der Sortierklausel die Zeilennummer berechnet.




Vorhergehend:Ist Xunlei Wanke Cloud Crowdfunding Taobao diesmal für die Nutzer wie Affen?
Nächster:Oracle fragt alle Spalten einer Tabelle und deren Datentypen ab
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com