请在下面的查询中帮助我确定我在做什么错:

以下代码给出错误:ORA-00904:DPT.DEPTNO:无效标识符

UPDATE emp1
SET ename = (SELECT dname
FROM dpt
WHERE dpt.deptno = emp1.deptno)
WHERE EXISTS (SELECT ename
FROM emp1
WHERE emp1.deptno = dpt.deptno);

查询的前半部分可以正常工作:
UPDATE emp1
SET ename = (SELECT dname
FROM dpt
WHERE dpt.deptno = emp1.deptno)

最佳答案

您在第二个子查询中有错误的表:

UPDATE emp1
SET ename = (SELECT dname FROM dpt WHERE dpt.deptno = emp1.deptno)
WHERE EXISTS (SELECT 1 FROM dpt WHERE emp1.deptno = dpt.deptno);
----------------------------^

奇怪的是,您将一个名为ename的列设置为大概是部门的名称。但这是另一回事。

10-07 15:05