Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 14301|Svar: 1

[Källa] Skillnaden mellan rownum och row_number() i Oracle

[Kopiera länk]
Publicerad på 2017-09-25 16:00:21 | | |
row_number()över(partition med kol1 ordning med kol2) betyder att sortera enligt kol2 inom gruppen, och värdet som beräknas av denna funktion representerar ordningsnumret (den på varandra följande unika inom gruppen) efter att varje grupp sorterats internt. Skillnaden från rownum är att när man använder rownum för sortering lägger man till ett slarvigt rownum i resultatmängden och sorterar sedan, medan row_number() sorterar först och sedan beräknar radnumret efter att sorteringsklausulen inkluderats.

1. Rownum i oraklet

Används för att numrera raderna som returneras från frågan, den första raden tilldelas en 1, den andra raden är en 2, och så vidare, kan detta pseudofält användas för att begränsa det totala antalet rader som returneras av frågan, och rownum kan inte prefixeras med namnet på någon tabell.

1. rownum för frågevillkor lika med ett visst värde

Om du vill hitta den första studenten i elevtabellen kan du använda rownum=1 som villkor. Men om du vill hitta informationen om den andra studenten i studenttabellen kan du inte hitta data med rownum=2. Eftersom rownum börjar från 1, men naturliga tal över 1 anses vara falska när rownum bedöms vara lika med ja, så det är omöjligt att hitta rownum = n(n>1 naturliga tal).




2. Rownum för frågevillkor större än ett visst värde

Om du vill hitta posterna från andra raden och framåt, när du använder rownum>2 och inte kan hitta posterna, kan du använda följande delfrågemetoder för att lösa problemet. Observera att rownum i delfrågan måste ha ett alias, annars kommer posten inte att hittas, eftersom rownum inte är en kolumn i en tabell, och om det inte finns något alias är det omöjligt att veta om rownum är en kolumn i delfrågan eller en kolumn i huvudfrågan.




3. rownum för frågevillkor mindre än ett visst värde

Om du vill hitta den tidigare posten i den tredje posten kan du få två poster när du använder rownum<3. Uppenbarligen tror rownum att tillståndet rownum < n (naturligt tal av (n>1) är sant, så du kan hitta posten.




4. Rownum och ordning

Rownum i Oracle är sekvensnumret som genereras när datan hämtas, så om du vill specificera rowmun-raddata för den specificerade sorterade datan måste du vara uppmärksam på det.




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

Det kan ses attRownum är inte ett sekvensnummer som genereras av namnkolumnen。 Systemet tilldelar numret på raden av poster i den ordning de infogades, och rowid tilldelas också i ordning. För att lösa detta problem måste subqueries användas




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

2. Oracle row_number ()

1、row_number() över (beställning av col_1[,col_2 ...])
Enligt col_1[,col_2 ...] Sortera, returnerar den sorterade resultatmängden och returnerar ett annat värde för varje rad.

2、row_number() över (uppdelning av col_n[,col_m ...] ordning av col_1[,col_2 ...])
För det första, enligt col_n[,col_m ... gruppering, och sedan i varje gruppering enligt col_1[,col_2 ...] sortera (stigande) och slutligen returnera den sorterade resultatmängden

Oracle row_number() instance

1. Använd row_number()-funktionen för att numrera, såsom



Princip: Sortera först efter PSD, och efter sorteringen, numrera varje databit.

2. Sortera ordningen i stigande prisordning och sortera varje post med följande kod:



3. Räkna antalet beställningar som varje kund nyligen har lagt.




4. När fönsteröppningsfunktioner som över används är exekveringen av gruppering och sortering över senare än exekveringen av "where, group by, order by".



Ovanstående kod exekverar where-klausulen först och numrerar sedan varje post efter exekveringen.

3. Skillnaden mellan row_number () och rownum

När du sorterar med rownum lägger du till ett dåligt rownum i resultatmängden och sorterar det sedan, medan row_number() sorterar först och sedan beräknar radnumret efter att sorteringsklausulen inkluderats.




Föregående:Är Xunlei Wanke Cloud crowdfunding Taobao till användare som apor den här gången?
Nästa:Oracle frågar alla kolumner i en tabell och deras datatyper
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com