【发布时间】:2020-06-23 03:47:28
【问题描述】:
我在 Oracle SQL 查询中遇到语法错误。查询应该让我了解员工的部门。如果员工没有部门(null),我想要层次结构中第一个经理的部门,它有一个部门。
SELECT department_id FROM department
WHERE department_id =
(
SELECT department_id FROM employee
WHERE department_id IS NOT NULL AND rownum = 1
start WITH employee_id = 19
connect by employee_id = prior manager_id
ORDER BY level
);
错误信息是这样的:
ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
Error at Line: 8 Column: 2
我已经编写了一个替代查询,它可以完成这项工作。但我对此不太满意。
SELECT department_id FROM department
WHERE department_id =
(
SELECT department_id FROM employee
WHERE level =
(
SELECT MIN(level) FROM employee
WHERE department_id IS NOT NULL
start WITH employee_id = 19
connect by employee_id = prior manager_id
)
start WITH employee_id = 19
connect by employee_id = prior manager_id
);
您知道如何解决第一个查询吗?还是简化第二个? 先感谢您。
【问题讨论】:
-
您不需要在子查询中进行排序。只需删除
ORDER BY level。 -
我可以确定,我得到了层次结构中最低级别的员工(部门不为空)吗?
标签: sql oracle subquery ora-00907