[英]how to update a sql database table based on the condition from another table in the same database
[英]oracle update two based on 2 condition from another table
我有2张桌子。 TableA
和TableB
我想基于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.