Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 14301|Відповідь: 1

[Джерело] Різниця між rownum і row_number() в Oracle

[Копіювати посилання]
Опубліковано 25.09.2017 16:00:21 | | |
row_number()over(розбиття за порядком COL1 за COL2) означає сортування за COL2 у групі, і значення, обчислене цією функцією, представляє номер порядку (послідовний унікальний у групі) після внутрішньої сортування кожної групи. Різниця від rownum у тому, що при використанні rownum для сортування ви додаєте неякісний rownum до набору результатів, а потім сортуєте його, тоді як row_number() спочатку сортує, а потім обчислює номер рядка після включення клаузи сортування.

1. Rownum в оракулі

Використовується для нумерації рядків, повернених із запиту, першому поверненому рядку присвоюється 1, другому — 2, і так далі; це псевдополе може обмежувати загальну кількість рядків, повернених запитом, і рядковий номер не може бути префіксований іменем будь-якої таблиці.

1. рядковий номер для умов запиту, що дорівнює певному значенню

Якщо ви хочете знайти першого учня в таблиці учня, можна використати 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 в 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 ...] Сортування, повертає відсортований набір результатів і повертає різне значення для кожного рядка.

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, виконання групування та сортування в 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