我有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;
答案 0 :(得分:0)
很多谷歌之后。
我找到了解决方案。希望它能帮助别人。
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);