更新和存在子句

3
请帮我找出下面查询中的错误: 以下代码会报错: 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)
1个回答

4
你在第二个子查询中使用了错误的表格:
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的列设置为一个部门名称,这似乎有点奇怪。但这是另外一回事了。


1
我仍然不明白为什么不能使用emp1?我只是在练习我的概念,所以尝试在不必创建新表的情况下改变事物。 - Manushree Mishra
@ManushreeMishra . . . 您在外部查询中使用了 emp1。根据查询中的其他逻辑,您想将其与 dpt 进行比较。 - Gordon Linoff
这个答案更适用 - https://dev59.com/mW865IYBdhLWcg3wCqHI - Vasin Yuriy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接