Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 14301|Odpověď: 1

[Zdroj] Rozdíl mezi rownum a row_number() v Oracle

[Kopírovat odkaz]
Zveřejněno 25.09.2017 16:00:21 | | |
row_number()over(partition by col1, order by col2) znamená třídit podle col2 v rámci skupiny a hodnota vypočítaná touto funkcí představuje pořadí číslo (po sobě jdoucí jedinečné v rámci skupiny) poté, co je každá skupina interně seřazena. Rozdíl oproti rownumu je v tom, že při použití rownumu pro třídění přidáte do výsledné množiny špatný rownum a pak ho třídíte, zatímco row_number() nejprve třídí a až po zahrnutí třídící klauzule počítá číslo řádku.

1. Rownum v věštírně

Používá se k číslování řádků vrácených dotazem, první řádek je přiřazen jako 1, druhý řádek jako 2, a tak dále, toto pseudopole lze použít k omezení celkového počtu řádků vrácených dotazem, a rownum nemůže být předponou žádné tabulky.

1. rownum pro dotazovací podmínky rovné určité hodnotě

Pokud chcete najít prvního studenta v tabulce studentů, můžete použít rownum=1 jako podmínku. Pokud však chcete najít informace o druhém studentovi v tabulce studentů, nemůžete data najít pomocí rownum=2. Protože rownum začíná od 1, ale přirozená čísla nad 1 jsou považována za nepravdivá, když je rownum považováno za rovno ano, takže je nemožné najít rownum = n(n>1 přirozených čísel).




2. Rownum pro dotazovací podmínky větší než určitá hodnota

Pokud chcete najít záznamy od druhého řádku dále, když pomocí rownum>2 záznamy nenajdete, můžete použít následující metody poddotazů k vyřešení problému. Všimněte si, že rownum v poddotazu musí mít alias, jinak záznam nebude nalezen, protože rownum není sloupec tabulky, a pokud alias není, není možné vědět, zda je rowum sloupcem poddotazu nebo sloupcem hlavního dotazu.




3. rownum pro dotazovací podmínky menší než určitou hodnotu

Pokud chcete najít předchozí záznam třetího záznamu, můžete získat dva záznamy pomocí rownum<3. Je zřejmé, že rownum si myslí, že podmínka rownum < n (přirozené číslo (n>1) je pravdivá, takže můžete najít záznam.




4. Rownum a pořadí

Rownum v Oracle je pořadové číslo generované při získávání dat, takže pokud chcete specifikovat řádková data pro zadaná seřazená data, musíte tomu věnovat pozornost.




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

Je vidět, žeRownum není pořadové číslo, které je generováno sloupcem jmen。 Systém přiřazuje počet řádků záznamů v pořadí, v jakém byly vloženy, a rowid je také přiřazen v pořadí. K vyřešení tohoto problému je nutné použít poddotazy




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

2. Věštba row_number ()

1、row_number() over (pořadí podle col_1[,col_2 ...])
Podle col_1[,col_2 ...] Třídění, vrátí seřazenou množinu výsledků a pro každý řádek vrátí jinou hodnotu.

2、row_number() nad (rozdělení podle col_n[,col_m ...] pořadí podle col_1[,col_2 ...])
Za prvé, podle col_n[,col_m ... seskupení, a pak v každé skupině podle col_1[,col_2 ...] sort (vzestupně) a nakonec vraťte seřazenou množinu výsledků

Instance Oracle row_number()

1. Použijte funkci row_number() k číslování, například



Princip: Nejprve seřaďte podle PSD a po seřazení očíslujte každý datový údaj.

2. Seřadit pořadí vzestupně podle ceny a seřadit každý záznam následujícím kódem:



3. Spočítejte počet objednávek, které každý zákazník nedávno zadal.




4. Při použití funkcí otevírání oken, jako je over, je provádění seskupování a třídění v over pozdější než provádění "where, group by, order by".



Výše uvedený kód nejprve vykoná klauzuli where a poté očísluje každý záznam po vykonání.

3. Rozdíl mezi row_number () a rownum

Při třídění s rownum přidáte do výsledné množiny špatný rownum a pak ho seřadíte, zatímco row_number() nejprve třídí a poté počítá číslo řádku po zařazení třídící klauzule.




Předchozí:Financuje Xunlei Wanke Cloud tentokrát Taobao uživatelům jako opice?
Další:Oracle dotazuje všechny sloupce v tabulce a jejich datové typy
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com