2015-12-09 44 views
0

任何人都可以告诉我如何在MySQL中将这样的内容转换为Oracle?将更新从MySQL转换为oracle

Update table1 t1 
    inner join table t2 on t1.id = t2.t1_id 
    left join table t3 on t2.id = t3.t2_id 
set 
    t1.some_table = 'some_value', 
    t2.some_table = 'some_value', 
    t3.some_table = 'some_value' 
    where t1.id = somevalue 
+2

这是否在MySQL中工作?什么是't2'&'t3'? – dstudeba

+0

您不能在Oracle中的一个语句中更新三个表。你需要三个独立的'update'语句。 –

回答

1

在Oracle(和大多数数据库)中,您需要三个单独的语句。我想是这样的:

update t1 
    set t1.some_table = 'somevalue' 
    where t1.id = somevalue; 

update t2 
    set t2.some_table = 'somevalue' 
    where t2.t1_id = somevalue; 

update t3 
    set t3.some_table = 'somevalue' 
    where exists (select 1 from t2 where t2.t1_id = somevalue and t3.t2_id = t2.id) ; 

如果您使用的是join S代表额外的过滤,这可能不是完全正确,但结构是正确的。使用where子句进行过滤。

而且,您可能希望将所有这些包装在单个事务中,以便全部成功或全部失败。

+0

太棒了,谢谢 – jay