Начиная с Oracle 12c, мы можем, наконец, использовать стандартное предложение ограничения строки SQL следующим образом:
SELECT * FROM t FETCH FIRST 10 ROWS ONLY
Теперь, в Oracle 12.1, было ограничение, которое очень раздражает при подключении таблиц. Невозможно иметь два столбца с одинаковым именем в предложении SELECT
при использовании предложения ограничения строки. Например, это повышает ORA-00918 в Oracle 12.1
SELECT t.id, u.id FROM t, u FETCH FIRST 10 ROWS ONLY
Это ограничение описано в руководстве для всех версий 12.1, 12.2, 18.0:
Обходной путь, очевидно, относится к столбцам
SELECT t.id AS t_id, u.id AS u_id FROM t, u FETCH FIRST 10 ROWS ONLY
Или прибегнуть к "классической" ROWNUM
страницы, используя функции ROWNUM
или окна.
Любопытно, однако, что исходный запрос с двусмысленными столбцами ID
отлично подходит для Oracle 12.2. Является ли это ошибкой документации или недокументированной функцией?