Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 14301|Antwoord: 1

[Bron] Het verschil tussen rownum en row_number() in Oracle

[Link kopiëren]
Geplaatst op 25-09-2017 16:00:21 | | |
row_number()over(partition met col1 order by col2) betekent sorteren volgens col2 binnen de groep, en de waarde die door deze functie wordt berekend, vertegenwoordigt het ordernummer (de opeenvolgende unieke binnen de groep) nadat elke groep intern is gesorteerd. Het verschil met rownum is dat je bij het gebruik van rownum voor sortering een slechte rownum toevoegt aan de resultaatset en die dan sorteert, terwijl row_number() eerst sorteert en daarna het rijnummer berekent nadat de sorteerclausule is opgenomen.

1. Rownum in het orakel

Gebruikt om de rijen die uit de query worden teruggegeven te nummeren, krijgt de eerste teruggegeven rij een 1, de tweede rij een 2, enzovoort; dit pseudoveld kan worden gebruikt om het totale aantal door de query teruggegeven rijen te beperken, en de rownum mag niet worden voorafgegaan door de naam van een tabel.

1. rownum voor queryvoorwaarden gelijk aan een bepaalde waarde

Als je de eerste student in de studententabel wilt vinden, kun je rownum=1 als voorwaarde gebruiken. Als je echter de informatie van de tweede student in de studenttabel wilt vinden, kun je de gegevens niet vinden met rownum=2. Omdat rownum begint bij 1, maar natuurlijke getallen boven 1 als onwaar worden beschouwd wanneer rownum gelijk aan ja wordt beoordeeld, is het onmogelijk om rownum = n(n>1 natuurlijke getallen te vinden).




2. Rownum voor queryvoorwaarden groter dan een bepaalde waarde

Als je de records vanaf de tweede rij wilt vinden, kun je bij het gebruik van rownum>2 de records niet vinden, de volgende subquery-methoden gebruiken om het probleem op te lossen. Let op dat de rownum in de subquery een alias moet hebben, anders wordt het record niet gevonden, omdat de rownum geen kolom van een tabel is, en als er geen alias is, is het onmogelijk te weten of de rownum een kolom van de subquery is of een kolom van de hoofdquery.




3. rownum voor querycondities kleiner dan een bepaalde waarde

Als je het vorige record van het derde record wilt vinden, kun je twee records krijgen met rownum<3. Uiteraard denkt rownum dat de conditie van rownum < n (natuurlijk getal van (n>1) waar is, dus je kunt het record vinden.




4. Rownum en ordening

De rownum in Oracle is het volgnummer dat wordt gegenereerd bij het ophalen van de data, dus als je de rowmun-rijdata voor de gespecificeerde gesorteerde data wilt specificeren, moet je daar goed op letten.




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

Dat is te zienDe rownum is geen volgnummer dat wordt gegenereerd door de naamkolom。 Het systeem wijst het nummer van de rij records toe in de volgorde waarin ze zijn ingevoegd, en de rowid wordt ook in volgorde toegewezen. Om dit probleem op te lossen, moeten subqueries worden gebruikt




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

2. Oracle row_number ()

1、row_number() over (bestelling door col_1[,col_2 ...])
Volgens col_1[,col_2 ...] Sort, geeft de gesorteerde resultaatset terug, en geeft voor elke rij een andere waarde terug.

2、row_number() over (verdeling door col_n[,col_m ...] orde door col_1[,col_2 ...])
Ten eerste, volgens col_n[,col_m ... groeperen, en vervolgens in elke groepering volgens de col_1[,col_2 ...] sorteren (stijgend) en tenslotte de gesorteerde resultaatset teruggeven

Oracle row_number() instance

1. Gebruik de row_number()-functie om te nummeren, zoals



Principe: Sorteer eerst op PSD en nummeren na het sorteren elk stukje data.

2. Sorteer de volgorde in oplopende volgorde van prijs en sorteer elk record met de volgende code:



3. Tel het aantal bestellingen dat elke klant recent heeft geplaatst.




4. Bij gebruik van vensteropeningsfuncties zoals over, is de uitvoering van groeperen en sorteren in boven later dan de uitvoering van "waar, groeperen op, orden op".



De bovenstaande code voert eerst de where-clausule uit en nummert vervolgens elk record na de uitvoering.

3. Het verschil tussen row_number () en rownum

Bij sorteren met rownum voeg je een slechte rownum toe aan de resultaatset en sorteer je die vervolgens, terwijl row_number() eerst sorteert en daarna het rijnummer berekent nadat de sorteerclausule is opgenomen.




Vorig:Is Xunlei Wanke Cloud deze keer crowdfunding Taobao voor gebruikers als apen?
Volgend:Oracle zoekt alle kolommen in een tabel en hun datatypes op
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com