Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 14301|Atbildi: 1

[Avots] Atšķirība starp rownum un row_number() Oracle

[Kopēt saiti]
Publicēts 25.09.2017 16:00:21 | | |
row_number()over(partition by col1 order by col2) nozīmē kārtot pēc col2 grupā, un šīs funkcijas aprēķinātā vērtība atspoguļo kārtas numuru (secīgo unikālo grupā) pēc katras grupas iekšējās kārtošanas. Atšķirība no rownum ir tāda, ka, izmantojot rownum kārtošanai, rezultātu kopai pievieno sliktu rownum un pēc tam to kārto, savukārt row_number() vispirms kārto un pēc tam aprēķina rindas numuru pēc kārtošanas klauzulas iekļaušanas.

1. Rownum orākulā

Izmanto, lai numurētu no vaicājuma atgrieztās rindas, pirmajai atgrieztajai rindai tiek piešķirts 1, otrajai rindai ir 2 utt., Šo pseidolauku var izmantot, lai ierobežotu vaicājuma atgriezto rindu kopējo skaitu, un rindas skaitlim nevar pievienot nevienas tabulas nosaukumu.

1. Rownum vaicājuma nosacījumiem, kas vienādi ar noteiktu vērtību

Ja studentu tabulā vēlaties atrast pirmo studentu, kā nosacījumu varat izmantot rownum=1. Tomēr, ja studentu tabulā vēlaties atrast informāciju par otro studentu, datus nevar atrast, izmantojot rownum=2. Tā kā rownum sākas no 1, bet naturāli skaitļi virs 1 tiek uzskatīti par nepatiesiem, ja rownum tiek uzskatīts par vienādu ar jā, tāpēc nav iespējams atrast rownum = n(n>1 naturālus skaitļus).




2. Rownum vaicājuma nosacījumiem, kas ir lielāki par noteiktu vērtību

Ja vēlaties atrast ierakstus no otrās rindas, izmantojot rownum>2 nevar atrast ierakstus, problēmas novēršanai varat izmantot šādas apakšvaicājuma metodes. Ņemiet vērā, ka apakšvaicājuma rindas numuram jābūt aizstājvārdam, pretējā gadījumā ieraksts netiks atrasts, jo rindas numurs nav tabulas kolonna, un, ja nav aizstājvārda, nav iespējams zināt, vai rindas numurs ir apakšvaicājuma kolonna vai galvenā vaicājuma kolonna.




3. Rownum vaicājuma nosacījumiem, kas ir mazāki par noteiktu vērtību

Ja vēlaties atrast trešā ieraksta iepriekšējo ierakstu, varat iegūt divus ierakstus, izmantojot rownum<3. Acīmredzot rownum uzskata, ka rownum < n (naturāls skaitlis (n>1) ir patiess, tāpēc jūs varat atrast ierakstu.




4. Rownum un secība

Oracle rindas numurs ir kārtas numurs, kas ģenerēts, izgūstot datus, tādēļ, ja vēlaties norādīt rindas datus norādītajiem sakārtotajiem datiem, jums jāpievērš uzmanība tam.




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

Var redzēt, kaRindas numurs nav kārtas numurs, ko ģenerē kolonna nosaukums。 Sistēma piešķir ierakstu rindas numuru tādā secībā, kādā tie tika ievietoti, un rindas id tiek piešķirts arī secībā. Lai atrisinātu šo problēmu, jāizmanto apakšvaicājumi




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

2. Oracle row_number ()

1、row_number() virs (pasūtījums pēc col_1[,col_2 ...])
Saskaņā ar col_1[,col_2 ...] Kārtot, atgriež sakārtoto rezultātu kopu un katrai rindai atgriež atšķirīgu vērtību.

2、row_number() virs (sadalījums ar col_n[,col_m ...] pasūtījumu ar col_1[,col_2 ...])
Pirmkārt, saskaņā ar col_n[,col_m ... grupēšana un pēc tam katrā grupēšanā atbilstoši col_1[,col_2 ...] kārtot (augošā secībā) un visbeidzot atgriezt sakārtoto rezultātu kopu

Oracle row_number() instance

1. Izmantojiet funkciju row_number(), lai numurētu, piemēram,



Princips: vispirms kārtojiet pēc PSD un pēc kārtošanas numurējiet katru datu vienību.

2. Kārtojiet secību augošā secībā pēc cenas un kārtojiet katru ierakstu ar šādu kodu:



3. Saskaitiet katra klienta pēdējā laikā veikto pasūtījumu skaitu.




4. Izmantojot logu atvēršanas funkcijas, piemēram, over, grupēšanas un šķirošanas izpilde ir vēlāka nekā "kur, grupēt pēc, pasūtīt pēc".



Iepriekš minētais kods vispirms izpilda klauzulu where un pēc tam numurē katru ierakstu pēc izpildes.

3. Atšķirība starp row_number () un rownum

Kārtojot ar rownum, rezultātu kopai pievieno neskaidru rownum un pēc tam to kārto, savukārt row_number() vispirms kārto un pēc tam aprēķina rindas numuru pēc kārtošanas klauzulas iekļaušanas.




Iepriekšējo:Vai Xunlei Wanke Cloud šoreiz ir Taobao pūļa finansējums lietotājiem kā pērtiķi?
Nākamo:Oracle vaicā visas tabulas kolonnas un to datu tipus
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com