将更新从mysql转换为oracle

时间:2015-12-09 14:47:46

标签: mysql sql oracle sql-update

有谁能告诉我如何在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

1 个答案:

答案 0 :(得分: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进行额外过滤,这可能不完全正确,但结构是正确的。使用where子句进行过滤。

并且,您可能希望将所有这些包装在一个事务中,因此要么全部成功,要么全部失败。