2015-09-27 62 views
2

请帮我找出我在做什么错在下面的查询:UPDATE和EXISTS子句

下面的代码给出了一个错误: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) 

回答

2

你必须在第二个子查询错误的表:

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?
我只是在练习我的概念,所以试图在无需制作新表格的情况下将事情变为现实。

+0

@ManushreeMishra。 。 。您在外部查询中使用'emp1'。您希望根据查询中其余的逻辑将其与“dpt”进行比较。 –