Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 14301|Atsakyti: 1

[Šaltinis] Skirtumas tarp rownum ir row_number() Oracle

[Kopijuoti nuorodą]
Paskelbta 2017-09-25 16:00:21 | | |
row_number()over(partition by col1 order by col2) reiškia rūšiuoti pagal col2 grupėje, o šios funkcijos apskaičiuota vertė reiškia eilės numerį (iš eilės unikalų grupėje) po to, kai kiekviena grupė yra surūšiuota viduje. Skirtumas nuo rownum yra tas, kad naudojant rownum rūšiavimui, į rezultatų rinkinį pridedate prastą rownum ir tada jį rūšiuojate, o row_number() pirmiausia rūšiuoja, o tada apskaičiuoja eilutės numerį, įtraukę rūšiavimo sąlygą.

1. Rownum orakule

Naudojamas iš užklausos grąžintoms eilutėms numeruoti, pirmajai grąžintai eilutei priskiriamas 1, antrai eilutei - 2 ir t. t., šis pseudolaukas gali būti naudojamas bendram užklausos grąžintų eilučių skaičiui apriboti, o eilutės numeris negali būti priešdėlis jokios lentelės pavadinimu.

1. Užklausos sąlygų, lygių tam tikrai reikšmei, eilutės numeris

Jei norite rasti pirmąjį mokinį studentų lentelėje, galite naudoti rownum=1 kaip sąlygą. Tačiau, jei norite rasti antrojo mokinio informaciją studentų lentelėje, negalite rasti duomenų naudodami rownum=2. Kadangi eilutė prasideda nuo 1, tačiau natūralieji skaičiai virš 1 laikomi klaidingais, kai eilutė laikoma lygia taip, todėl neįmanoma rasti eilutės = n(n>1 natūraliųjų skaičių).




2. Užklausos sąlygų, didesnių už tam tikrą reikšmę, eilutės numeris

Jei norite rasti įrašus nuo antros eilutės, kai naudojate rownum>2 negalite rasti įrašų, galite naudoti šiuos antrinės užklausos metodus, kad išspręstumėte problemą. Atkreipkite dėmesį, kad antrinės užklausos eilutės numeris turi turėti slapyvardį, kitaip įrašas nebus rastas, nes eilutės numeris nėra lentelės stulpelis, o jei nėra slapyvardžio, neįmanoma žinoti, ar eilutės numeris yra antrinės užklausos stulpelis, ar pagrindinės užklausos stulpelis.




3. Užklausos sąlygų, mažesnių už tam tikrą reikšmę, eilutės numeris

Jei norite rasti ankstesnį trečiojo įrašo įrašą, naudodami rownum<3 galite gauti du įrašus. Akivaizdu, kad rownum < n (natūralus skaičius (n>1) yra teisinga, todėl galite rasti įrašą.




4. Rownum ir tvarka

"Oracle" eilutės numeris yra eilės numeris, sugeneruotas gaunant duomenis, todėl, jei norite nurodyti nurodytų rūšiuotų duomenų eilutės duomenis, turite į tai atkreipti dėmesį.




EILUTĖS ID PAVADINIMAS
---------- ------ ---------------------------------------------------
3 200003 Li San
2 200002 Wang Er
1 200001 Zhang Yi
4 200004 Zhao Si

Galima pastebėti, kadEilutės numeris nėra eilės numeris, kurį sugeneruoja pavadinimo stulpelis。 Sistema priskiria įrašų eilutės numerį tokia tvarka, kokia jie buvo įterpti, o eilutės ID taip pat priskiriamas eilės tvarka. Norint išspręsti šią problemą, reikia naudoti antrines užklausas




EILUTĖS ID PAVADINIMAS
---------- ------ ---------------------------------------------------
1 200003 Li San
2 200002 Wang Er
3 200001 Zhang Yi
4 200004 Zhao Si

2. Orakulas row_number ()

1、row_number() virš (užsakymas pagal col_1[,col_2 ...])
Pagal col_1[,col_2 ...] Rūšiuoti, pateikia surūšiuotą rezultatų rinkinį ir pateikia skirtingą kiekvienos eilutės reikšmę.

2、row_number() virš (padalijimas pagal col_n[,col_m ...] užsakymą pagal col_1[,col_2 ...])
Pirma, pagal col_n[,col_m ... grupavimas, o po to kiekvienoje grupėje pagal col_1[,col_2 ...] rūšiuoti (didėjančia) ir galiausiai grąžinti surūšiuotą rezultatų rinkinį

Oracle row_number() egzempliorius

1. Naudokite funkciją row_number() numeruoti, pvz.,



Principas: Pirmiausia rūšiuokite pagal PSD, o po rūšiavimo sunumeruokite kiekvieną duomenų vienetą.

2. Rūšiuokite užsakymą didėjančia kainos tvarka ir kiekvieną įrašą rūšiuokite pagal šį kodą:



3. Suskaičiuokite kiekvieno kliento neseniai pateiktų užsakymų skaičių.




4. Naudojant langų atidarymo funkcijas, tokias kaip over, grupavimas ir rūšiavimas vykdomas vėliau nei "where, group by, order by".



Aukščiau pateiktas kodas pirmiausia vykdo sąlygą where, o po vykdymo sunumeruoja kiekvieną įrašą.

3. Skirtumas tarp row_number () ir rownum

Rūšiuodami su rownum, į rezultatų rinkinį pridedate nekokybišką rownum ir tada jį rūšiuojate, o row_number() pirmiausia rūšiuoja, o tada apskaičiuoja eilutės numerį, įtraukę rūšiavimo sąlygą.




Ankstesnis:Ar "Xunlei Wanke Cloud" sutelktinis finansavimas "Taobao" vartotojams šį kartą yra beždžionės?
Kitą:"Oracle" pateikia užklausas visiems lentelės stulpeliams ir jų duomenų tipams
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com