Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 14301|Válasz: 1

[Forrás] A különbség a rownum és a row_number() között az Orákulában

[Linket másol]
Közzétéve 2017. 09. 25. 16:00:21 | | |
row_number()over(partition by col1, order by col2) azt jelenti, hogy a col2 szerint rendezzük a csoporton belül, és a függvény által kiszámított érték a sorrendszámot (a csoporton belüli egymást követő egyedi) jelöli, miután minden csoportot belső rendezünk. A különbség a rownumhoz képest, hogy amikor a rownumot használjuk a rendezésre, hozzáadunk egy gyenge rownumot az eredményhalmazhoz, majd rendezed, míg a row_number() először rendezi, majd a sorszámot számítja ki a sorszám után, miután beilleszted a sort.

1. Rownum az jósnőben

A lekérdezésből visszaadt sorok számozására használják: az első visszaadott sorhoz 1-est, a második sorhoz 2-es, és így tovább, ez a pszeudomező korlátozhatja a lekérdezés által visszaadott sorok teljes számát, és a sorszám előtagja nem lehet bármely tábla neve előtagja.

1. Rownum lekérdezési feltételekhez, amelyek egy bizonyos értékkel egyenlőek

Ha meg akarod találni az első diákot a diáktáblában, a rownum=1-et feltételként használhatod. Azonban, ha a második diák adatait szeretnéd megtalálni a diáktáblában, nem találod meg az adatokat rownum=2 használatával. Mert a rownum 1-ből indul, de az 1 feletti természetes számokat hamisnak tekintik, ha a rownumot egyenlőnek ítélik igennel, így lehetetlen megtalálni a rownum = n(n>1 természetes számot).




2. Rownum lekérdezési feltételek esetén, amelyek egy bizonyos értéknél nagyobb

Ha a második sortól kezdve meg akarod találni a rekordokat, amikor a rownum>2 nem találja meg a rekordokat, a következő allekérdezési módszereket használhatod a probléma megoldására. Fontos megjegyezni, hogy a sorszámnak az allekérdezésben aliasnak kell lennie, különben a rekord nem lesz megtalálható, mert a sorszám nem egy tábla oszlopa, és ha nincs alias, lehetetlen megtudni, hogy a sorszám az allekérdezés oszlopa-e vagy a fő lekérdezés oszlopa.




3. Rownum lekérdezési feltételek esetén, amelyek egy bizonyos értéknél kisebb értéket képviselnek

Ha meg akarod találni a harmadik rekord előző rekordját, két rekordot kaphatsz a rownum<3 használatával. Nyilvánvalóan a rownum szerint a rownum < n ((n>1 természetes száma) feltétele igaz, így megtalálhatod a rekordot.




4. Rownum és sorrend

Az Oracle sorszáma az adat lekérésekor generált sorszám, így ha meg akarod határozni a sormun adatot a megadott rendezett adatokhoz, figyelned kell rá.




ROWNUM AZONOSÍTÓ NÉV
---------- ------ ---------------------------------------------------
3 200003 Li San
2 200002 Wang Er
1 200001 Zhang Yi
4 200004 Zhao Si

Látható, hogyA sorszám nem egy sorszám, amelyet a névoszlop generál。 A rendszer a rekordok számát abban a sorrendben rendeli ki, ahogyan beillesztették, és a rowid is sorrendben van kiosztva. Ennek a problémának a megoldásához allekérdezéseket kell használni




ROWNUM AZONOSÍTÓ NÉV
---------- ------ ---------------------------------------------------
1 200003 Li San
2 200002 Wang Er
3 200001 Zhang Yi
4 200004 Zhao Si

2. Orákulum row_number ()

1、row_number() over (parancs: col_1[,col_2 ...])
col_1[,col_2 ...] szerint Sort, visszaadja a rendezett eredményhalmazt, és minden sorhoz más értéket ad vissza.

2、row_number() felett (felosztás col_n[,col_m ...] rendezés col_1[,col_2 ...])
Először is, col_n[,col_m szerint ... csoportosítás, majd minden csoportosításban a col_1[,col_2 ...] szerint Sorolni (emelkedő), és végül visszaadja a rendezett eredményhalmazt

Oracle row_number() instance

1. Használd a row_number() függvényt a számozáshoz, például



Elv: Először PSD szerint rendezd, majd a rendezés után számozd az egyes adatdarabokat.

2. Soroljuk a rendelést növekvő ársorrendben, és minden rekordot a következő kóddal rendezzünk:



3. Számold össze, hány rendelést adott az egyes vásárlók nemrégiben.




4. Amikor ablaknyitó funkciókat használunk, mint az over, a csoportosítás és az over rendezés végrehajtása később, mint a "hol, csoportosítva, sorrendben" végrehajtása.



A fenti kód először a where klauzadékot hajtja végre, majd a végrehajtás után minden rekordot számoz.

3. A különbség row_number () és a rownum között

Rownummal való rendezéskor hozzáadsz egy gyenge rownumot az eredményhalmazhoz, majd rendezed, miközben először a row_number() rendezi, majd a sorszámot kiszámítja a sorszám után.




Előző:A Xunlei Wanke Cloud közösségi finanszírozást ad a Taobao-nak most, mint majomokat?
Következő:Az Oracle lekérdezi a táblázat összes oszlopát és azok adattípusait
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com