日期:2014-05-17  浏览次数:21360 次

Oracle update语句 多表where 条件如何处理
例如表 A(a,b,c) 表 B(a,d,e)
我想要做的处理,

update A set A.a='1'
from A
left join B on A.a=B.a
where B.d='2'
and A.b='3'

但是在Oracle中实现不了..
不用子查询,用left join 如何解决呢??
抱各路大神大腿..菜鸟求解释

------解决方案--------------------
引用:
例如表 A(a,b,c) 表 B(a,d,e)
我想要做的处理,

update A set A.a='1'
from A
left join B on A.a=B.a
where B.d='2'
and A.b='3'

但是在Oracle中实现不了..
不用子查询,用left join 如何解决呢??
抱各路大神大腿..菜鸟求解释

很少这么用。再说,你的LEFT JOIN没有任何意义,因为B.d='2'这个条件必定会把那些只在A中存在的数据过滤掉。如果不想用子查询,ORACLE比较常见的你可以试试MERGE INTO
------解决方案--------------------

update A set a = '1'
where a.id in (select id from A left join B on A.a=B.a where B.d=2 and A.b=3);