Есть ли разница между «FETCH» и «FETCH FIRST»? - PullRequest
0 голосов
/ 21 ноября 2019

В настоящее время я готовлюсь к экзамену Oracle SQL. У меня есть несколько тестовых экзаменов, чтобы попробовать. Один вопрос был следующим:

Какой запрос приведет к требуемому результату?

Было два возможных ответа, я выбрал самый верхний. Но ответ должен был быть самым низким согласно экзамену.

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC
FETCH FIRST 5 PERCENT ROWS ONLY;

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC
FETCH 5 PERCENT ROWS ONLY;

Теперь я хотел выяснить, в чем разница между 'FETCH' и 'FETCH FIRST' есть, но до сих пор мне не повезло в поиске, я нахожу только страницы, которые говорят о 'FETCH FIRST' в сочетании с 'FETCH NEXT' и так далее. Но пока не повезло в том, что я ищу.

Может кто-нибудь объяснить мне, в чем разница между 'FETCH' и 'FETCH FIRST' ? И если оба вопроса верны, почему экзамен предпочел бы 'FETCH' вместо 'FETCH FIRST' ?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 21 ноября 2019

Документация SELECT Oracle содержит синтаксис предложения ограничения строки:

SELECT row limiting clause

С этого момента *Пункты 1011 * и FETCH являются необязательными;однако, если включено условие FETCH, за ним должно следовать ключевое слово FIRST или NEXT.

Таким образом, второй запрос:

SELECT employee_id, last_name, salary
FROM employees
ORDER BY salary DESC
FETCH 5 PERCENT ROWS ONLY;

не является синтаксически правильнымтак как отсутствует ключевое слово FIRST (или NEXT).

1 голос
/ 21 ноября 2019

Ваш экзамен неверен, правильный запрос - лучший.

Оператор FETCH - это оператор PL / SQL, который используется для извлечения строк данных из набора результатов многострочного запроса,и поэтому не может использоваться в запросе SQL: https://docs.oracle.com/cd/B12037_01/appdev.101/b10807/13_elems020.htm

Оператор FETCH (NEXT | FIRST) используется в запросах для извлечения только определенного числа или строк из результата: https://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqljoffsetfetch.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...