Чи є спосіб зробити так, щоб Oracle
запит поводився так, як він містить MySQL limit
застереження?
В MySQL
, я можу зробити це:
select *
from sometable
order by name
limit 20,10
щоб отримати 21-е до 30-го рядків (пропустити перші 20, дати наступні 10). Рядки вибираються після знака order by
, тому він дійсно починається з 20-ї назви за алфавітом.
В Oracle
, єдине , що люди вже є rownum
псевдо-стовпець, але він оцінюється до order by
того , що означає наступне:
select *
from sometable
where rownum <= 10
order by name
поверне випадковий набір з десяти рядків, упорядкованих по імені, що зазвичай не є тим, що я хочу. Він також не дозволяє вказувати зміщення.
ORDER BY
. У цьому вся суть замовлення спочатку. Якщо основні дані змінюються, а ваш набір результатів змінюється через них, то чому б не показати користувачеві оновлені результати замість застарілої інформації? Також управління державою - це чума, яку слід уникати якомога більше. Це постійне джерело ускладнень та помилок; ось чому функціонал стає таким популярним. І коли ви знаєте, чи закінчується весь набір результатів у пам'яті? У Інтернеті ви не можете знати, коли користувач залишає.