Sql 基于多个表过滤器更新列

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' 我

我有三张桌子,分别是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'

我尝试了多种方法来安排这个问题,并研究了多种解决方案,但无法找出问题所在。

坏消息是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时出现了一些语法错误,现在已经编辑过了。