【问题标题】:UPDATE and EXISTS ClauseUPDATE 和 EXISTS 条款
【发布时间】:2015-09-27 17:08:37
【问题描述】:

请帮助我在下面的查询中找出我做错了什么:

以下代码给出错误:ORA-00904 : DPT.DEPTNO : invalid identifier

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)

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

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

    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 的列设置为可能是一个部门的名称。但那是另一回事了。

    【讨论】:

    • 我还是不明白为什么我不能使用emp1?
      我只是在练习我的概念,所以试图在不制作新桌子的情况下扭转局面。
    • @ManushreeMishra 。 . .您在外部查询中使用emp1。您想根据查询中的其余逻辑将其与 dpt 进行比较。
    • 这个答案更适用——stackoverflow.com/questions/4015199/…
    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2012-08-08
    相关资源
    最近更新 更多