Говнокод →
Ищем ошибки в sql запросе
К сожалению и к моему большому удивлению в Оракле нет такого полезного оператора LIMIT, который есть в MySQL. Аналогом ему в оракле служит псевдо-колонка rownum, которая отображает номер выбираемой записи по ходу выборки.
Итак, есть такой вот простенький sql запрос для Oracle
который по мнению автора выберет 19 строк, начиная с 2 и заканчивая 20-й.
Вопрос знатокам: Будет ли такой вопрос выводить требуемые записи? Вроде как будет… Но раз этот пост в разделе говнокод, то надо подумать ещё.
Думаем. Когда у нас выберется первая запись по нашему запросу? Когда rownum будет 2. А когда rownum будет 2? После того как выберется первая запись. Из всего этого делаем однозначный вывод — не выберется ни одной записи.
Итак, есть такой вот простенький sql запрос для Oracle
SELECT * FROM T WHERE ROWNUM BETWEEN 2 AND 20
который по мнению автора выберет 19 строк, начиная с 2 и заканчивая 20-й.
Вопрос знатокам: Будет ли такой вопрос выводить требуемые записи? Вроде как будет… Но раз этот пост в разделе говнокод, то надо подумать ещё.
Думаем. Когда у нас выберется первая запись по нашему запросу? Когда rownum будет 2. А когда rownum будет 2? После того как выберется первая запись. Из всего этого делаем однозначный вывод — не выберется ни одной записи.




это ж Оракл:)) 100% что-то должно быть
FROM (SELECT ROWNUM RWID, O.*
FROM (SELECT * FROM TABLENAME) O
WHERE ROWNUM <= 2) O
WHERE O.RWID >= 20
2 вложеных запроса и дело в шляпе=)
Оракл рулит, наверно, не в лимитах:)
Да и вообще зачем Ораклу limit ?:)
Наверняка есть и другой способ. кстати способ описанный в самом посте выглядит рабочим, но с ораклом я не работал, так, что ниче сказать не могу.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.