Sql 基于多个表过滤器更新列
我有三张桌子,分别是T1,T2,T3 我的更新查询如下所示:Sql 基于多个表过滤器更新列,sql,oracle,sql-update,Sql,Oracle,Sql Update,我有三张桌子,分别是T1,T2,T3 我的更新查询如下所示: UPDATE T1 SET C1 = 'Y' FROM T2 INNER JOIN T1 ON T2.I = T1.I T2 INNER JOIN T3 ON T2.IN = T3.IN WHERE T2.A = 'A' AND T2.B = 'B' AND T3.APP = 'LOW' 我
UPDATE
T1
SET
C1 = 'Y'
FROM
T2
INNER JOIN T1 ON T2.I = T1.I
T2 INNER JOIN T3 ON T2.IN = T3.IN
WHERE T2.A = 'A'
AND T2.B = 'B'
AND T3.APP = 'LOW'
我尝试了多种方法来安排这个问题,并研究了多种解决方案,但无法找出问题所在。坏消息是Oracle不支持
更新查询中的连接
——即使语法合理(和内部连接之间的和?)
好消息是,您可以使用EXISTS
:
update t1
set c1 = 'Y'
where exists (select 1
from t2 join
t3
on t2.in = t3.in
where t2.i = t1.i and t2.A = 'A' and t2.B = 'B' and
t3.APP = 'LOW'
);
连接条件不需要与“和”。。。在第三行,我相信你可以在开始时去掉“和T2”。此外,第4行可能应该以“WHERE”而不是“AND”开头,因为您不再告诉它如何加入,而是提供了特定的过滤器。您是否收到可以发布的特定错误消息?谢谢,我应该知道“Oracle不支持加入更新”在这里复制sql时出现了一些语法错误,现在已经编辑过了。