繁体   English   中英

oracle根据另一个表中的2个条件更新两个

[英]oracle update two based on 2 condition from another table

我有2张桌子。 TableATableB

我想基于2个条件更新TableA ,1个条件来自TableA ,第二个条件来自TableB

UPDATE TableA SET
    TYPE = (CASE when TYPE = (SELECT DISTINCT(A.TYPE) FROM TableA A JOIN TableB B ON B.SOID = A.NAME where B.level = 9 and A.TYPE = 66) then 12
                      when TYPE = (SELECT DISTINCT(A.TYPE) FROM TableA A JOIN TableB B ON B.SOID = A.NAME where B.level = 4 and A.TYPE = 66) then 11
             else NULL 
END);

由于某种原因,它无法正确更新。 我只有3个满足此条件的记录,但它正在更新看起来像的每一行。

这可以在SQL中使用来完成。更新多个表(Oracle中不允许)时,SQL UPDATE语句的语法为:

UPDATE table1, table2, ... 
SET column1 = expression1,
    column2 = expression2,
    ...
WHERE table1.column = table2.column
AND conditions;

谷歌之后。

我找到了解决方案。 希望它能帮助别人。

    UPDATE (SELECT A.TYPE,B.LEVEL FROM TABLEA A 
            JOIN TABLEB B ON B.SOID = A.NAME where B.level IN (9,4) and A.TYPE = 66) 
    SET TYPE = (CASE (WHEN LEVEL = 9 THEN 12 
                  WHEN LEVEL = 4 THEN 11 
                  ELSE NULL 
                END);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM