基于多个表过滤器更新列

时间:2016-05-26 15:36:13

标签: 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'

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

1 个答案:

答案 0 :(得分:4)

坏消息是Oracle在JOIN查询中不支持UPDATE - 即使语法合理(AND之间INNER JOINS ???)。

好消息是你可以使用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'
                 );