2015-09-27 89 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」進行比較。 –