FETCH引发异常java.sql.SQLSyntaxErrorException:ORA-00918:列定义不明确

时间:2019-06-20 03:40:57

标签: sql oracle

每当我添加这行代码时,它总是会引发异常

OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY;

完整代码:

SELECT 
    EMPLOYEES.EMPLOYEE_ID,
    EMPLOYEES.FIRST_NAME, EMPLOYEES.LAST_NAME, EMPLOYEES.EMAIL,
    EMPLOYEES.PHONE_NUMBER, EMPLOYEES.HIRE_DATE, EMPLOYEES.JOB_ID,
    EMPLOYEES.DEPARTMENT_ID, EMPLOYEES.MANAGER_ID, EMPLOYEES.SALARY,
    JOBS.JOB_ID, JOBS.JOB_TITLE, DEPARTMENTS.DEPARTMENT_ID,
    DEPARTMENTS.DEPARTMENT_NAME, DEPARTMENTS.MANAGER_ID, M.EMPLOYEE_ID,
    M.FIRST_NAME
    || ' '
    || M.LAST_NAME AS MANAGER_NAME 
FROM 
    EMPLOYEES 
INNER JOIN 
    JOBS ON EMPLOYEES.JOB_ID = JOBS.JOB_ID 
INNER JOIN  
    DEPARTMENTS ON EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID 
INNER JOIN  
    EMPLOYEES M ON DEPARTMENTS.MANAGER_ID = M.EMPLOYEE_ID 
ORDER BY 
    EMPLOYEES.EMPLOYEE_ID ASC 

我想显示站点中多个表中的数据,并将其限制为仅十个输出,但始终会引发异常。我该怎么办?我尝试添加别名,但是没有用。

2 个答案:

答案 0 :(得分:0)

为别名重复名称

M.FIRST_NAME as "Manager name"

或者没有as

DEPARTMENTS.DEPARTMENT_ID "Department ID",

答案 1 :(得分:0)

您的问题的简单答案是:

根据有关FETCH的Oracle 12c文档:

  

如果选择列表包含具有相同名称的列,并且您   指定row_limiting_clause,则发生ORA-00918错误。这个   相同名称的列是否在相同的位置,将发生错误   表或其他表中。您可以通过以下方法解决此问题:   为名称相同的列指定唯一的列别名。

干杯!