Есть ли способ заставить 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
. Вот и весь смысл заказа в первую очередь. Если базовые данные изменяются, и ваш набор результатов изменяется из-за этого, то почему бы не показать пользователю обновленные результаты вместо устаревшей информации? Кроме того, государственное управление - это чума, которую следует избегать, насколько это возможно. Это постоянный источник осложнений и ошибок; вот почему функционал становится таким популярным. И когда бы вы знали, чтобы истечь весь набор результатов в памяти? В Интернете у вас нет возможности узнать, когда пользователь уходит.