Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 14301|Отговор: 1

[Източник] Разликата между rownum и row_number() в Oracle

[Копирай линк]
Публикувано в 25.09.2017 г. 16:00:21 ч. | | |
row_number()over(partition by col1 order by col2) означава да се сортира според COL2 в групата, а стойността, изчислена от тази функция, представлява номера на порядъка (последователен уникален в групата) след като всяка група бъде сортирана вътрешно. Разликата от rownum е, че когато използвате rownum за сортиране, добавяте некачествен rownum към резултатния набор и след това го сортирате, докато row_number() сортира първо и след това изчислява номера на реда след включване на сортиращата клауза.

1. Роунъм в оракула

Използва се за номериране на редовете, върнати от заявката, първият върнат ред получава 1, вторият ред е 2 и така нататък; това псевдополе може да се използва за ограничаване на общия брой редове, върнати от заявката, а rownum не може да бъде предшестван с името на която и да е таблица.

1. Rownum за условия на заявка, равни на определена стойност

Ако искате да намерите първия ученик в ученическата таблица, можете да използвате rownum=1 като условие. Въпреки това, ако искате да намерите информацията за втория ученик в студентската таблица, не можете да намерите данните с rownum=2. Тъй като rownum започва от 1, но естествените числа над 1 се считат за неверни, когато rownum се счита за равен на да, затова е невъзможно да се намери rownum = n(n>1 естествени числа).




2. Rownum за условия на заявка, по-големи от определена стойност

Ако искате да намерите записите от втория ред нататък, когато използвате rownum>2 не можете да намерите записите, можете да използвате следните методи за подзаявка, за да решите проблема. Обърнете внимание, че rownum в подзаявката трябва да има псевдоним, иначе записът няма да бъде намерен, защото rownum не е колона на таблица, и ако няма псевдоним, е невъзможно да се знае дали rownum е колона на подзаявката или колона на основната заявка.




3. Rownum за условия на заявка, по-малки от определена стойност

Ако искате да намерите предишния запис на третия запис, можете да получите два записа, когато използвате rownum<3. Очевидно rownum смята, че условието на rownum < n (естествено число на (n>1) е вярно, така че можете да намерите записа.




4. Rownum и подреждане

Rownum в Oracle е последователният номер, генериран при извличане на данните, така че ако искате да зададете данните от rowmun ред за зададените сортирани данни, трябва да обърнете внимание.




ИМЕ НА ROWNUM ID
---------- ------ ---------------------------------------------------
3 200003 Ли Сан
2 200002 Ван Ър
1 200001 Джан И
4 200004 Джао Си

Може да се види, чеРедовият номер не е последователен номер, генериран от колоната с имена。 Системата присвоява номера на реда от записи в реда, в който са били вмъкнати, а rowid също се присвоява в ред. За да се реши този проблем, трябва да се използват подзаявки




ИМЕ НА ROWNUM ID
---------- ------ ---------------------------------------------------
1 200003 Ли Сан
2 200002 Ван Ър
3 200001 Джан И
4 200004 Джао Си

2. Оракул row_number ()

1、row_number() над (подреждане по col_1[,col_2 ...])
Според col_1[,col_2 ...] Sort, връща сортирания набор от резултати и връща различна стойност за всеки ред.

2、row_number() над (разделяне по col_n[,col_m ...] ред по col_1[,col_2 ...])
Първо, според col_n[,col_m ... групиране, и след това във всяка група според col_1[,col_2 ...] сортиране (възходящо) и накрая връщане на сортирания набор от резултати

Oracle row_number() инстанция

1. Използвайте функцията row_number() за номериране, например



Принцип: Първо сортирайте по PSD, а след сортиране номерирайте всяко парче данни.

2. Сортирайте поръчката в нарастващ ред на цената и сортирайте всеки запис със следния код:



3. Преброй броя поръчки, направени от всеки клиент наскоро.




4. При използване на функции за отваряне на прозорци като over, изпълнението на групирането и сортирането в над е по-късно от изпълнението на "where, group by, order by".



Горният код първо изпълнява клаузата "where", а след това номерира всеки запис след изпълнение.

3. Разликата между row_number () и rownum

Когато сортирате с rownum, добавяте некачествен rownum към набора от резултати и след това го сортирате, докато row_number() сортира първо и след това изчислява номера на реда след включване на клаузата за сортиране.




Предишен:Този път Xunlei Wanke Cloud финансира ли Taobao като маймуни?
Следващ:Oracle прави заявки за всички колони в таблица и техните типове данни
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com