See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 14301|Vastuse: 1

[Allikas] Erinevus rownumi ja row_number() vahel Oracle'is

[Kopeeri link]
Postitatud 25.09.2017 16:00:21 | | |
row_number()over(partition by col1 order by col2) tähendab sorteerimist vastavalt col2 grupis ning selle funktsiooni arvutatud väärtus tähistab järjestusnumbrit (järjestikune unikaalne grupis) pärast iga grupi sisemist sorteerimist. Erinevus rownumist seisneb selles, et sorteerides lisad tulemuste hulka kehva rownumi ja sorteerid selle, samal ajal kui row_number() sorteerib esmalt ja arvutab seejärel rea numbri pärast sorteerimisklausli lisamist.

1. Rownum oraaklis

Kasutatakse päringust tagastatud ridade nummerdamiseks, esimesele reale määratakse 1, teisele reale 2 jne, seda pseudovälja saab kasutada päringu tagastatud ridade koguarvu piiramiseks ning reanumbrile ei saa ette lisada ühegi tabeli nime.

1. Rownum päringutingimuste jaoks, mis on võrdsed teatud väärtusega

Kui soovid leida esimese õpilase õpilase tabelis, võid kasutada tingimusena rownum=1. Kui aga soovid leida teise õpilase infot õpilastabelist, ei leia sa andmeid rownum=2 abil. Sest rownum algab 1-st, kuid naturaalarvud üle 1 loetakse valeks, kui rownum on võrdne jah-ga, seega on võimatu leida rownum = n(n>1 naturaalarvu).




2. Rownum päringutingimuste jaoks, mis on suuremad kui teatud väärtus

Kui soovid leida kirjeid alates teisest realt, siis kui rownum>2 ei leia kirjeid, saad probleemi lahendamiseks kasutada järgmisi alampäringu meetodeid. Pane tähele, et alampäringu rownumil peab olema alias, vastasel juhul kirjet ei leita, sest rownum ei ole tabeli veerg, ja kui aliast pole, on võimatu teada, kas rownum on alampäringu veerg või peamise päringu veerg.




3. Rownum päringutingimuste puhul, mis on väiksemad kui teatud väärtus

Kui soovid leida kolmanda kirje eelmise kirje, saad rownum<3 kasutamisel kaks kirjet. Loomulikult arvab rownum, et rownum < n (naturaalne arv (n>1) on tõene, seega saad kirje leida.




4. Rownum ja järjekord

Oracle'is on järjestusnumber, mis genereeritakse andmete taastamisel, seega kui soovid määrata valitud sorteeritud andmete rowmun reaandmed, pead sellele tähelepanu pöörama.




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

On näha, etRidanumber ei ole jadanumber, mis genereeritakse nimeveerust。 Süsteem määrab kirjete rea numbri selles järjekorras, milles need lisati, ning rowid määratakse samuti järjekorras. Selle probleemi lahendamiseks tuleb kasutada alampäringuid




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

2. Oracle row_number ()

1、row_number() üle (tellimus col_1[,col_2 ...])
Vastavalt col_1[,col_2 ...] Sort, tagastab sorteeritud tulemuste komplekti ja iga rea jaoks erineva väärtuse.

2、row_number() üle (jagamine col_n[,col_m ...] tellimus col_1[,col_2 ...])
Esiteks, vastavalt col_n[,col_m ... rühmitus, ja seejärel igas rühmas vastavalt col_1[,col_2 ...] sort (tõusev) ja lõpuks tagasta sorteeritud tulemuste hulk

Oracle row_number() instants

1. Kasuta row_number() funktsiooni numbrite arvutamiseks, näiteks



Põhimõte: Sorteeri esmalt PSD järgi ja pärast sorteerimist nummerda iga andmeosa.

2. Sorteeri järjekord kasvavas hinnajärjekorras ja sorteeri iga kirje järgmise koodiga:



3. Loe iga kliendi hiljutiste tellimuste arv.




4. Kui kasutatakse akna avamise funktsioone nagu üle, toimub grupeerimise ja sorteerimise täitmine üle üle hiljem kui "kus, grupeeri, järjesta" täitmine.



Ülaltoodud kood täidab esmalt kus klausli ja nummerdab seejärel iga kirje pärast täitmist.

3. Erinevus row_number () ja rownumi vahel

Rownumiga sorteerimisel lisad tulemuste hulka kehva rownumi ja seejärel sorteerid selle, samal ajal kui row_number() sorteerib esmalt ja arvutab rea numbri pärast sorteerimisklausli lisamist.




Eelmine:Kas Xunlei Wanke Cloud rahastab seekord Taobao ühisrahastust kasutajatele nagu ahvid?
Järgmine:Oracle pärib kõiki veeru tabelis ja nende andmetüüpe
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com