多表更新有关问题,附有源码

多表更新问题,附有源码update work_cld_define aset a.workcld_typeid aaaaaaaafrom work_cld_define

多表更新问题,附有源码
update work_cld_define a
   set a.workcld_typeid = 'aaaaaaaa'
   from work_cld_define a, work_cld_type b, work_cld_typetime c
 where a.workcld_typeid = b.workcld_typeid
   and b.workcld_typeid = c.workcld_typeid
   and a.workclddefineid = 'bbbbbbb'
   and c.workcld_timeid = 'cccccccc'

请问大家这个为什么会报ORA-00933SQL命令为正确结束错误,找了半天找不到
[解决办法]
看错了,应该是这个:

update work_cld_define a
   set a.workcld_typeid = 'aaaaaaaa'
 where a.workcld_typeid =
       (select b.workcld_typeid
          from work_cld_type b, work_cld_typetime c
         WHERE b.workcld_typeid = c.workcld_typeid
           AND c.workcld_timeid = 'cccccccc')
   and a.workclddefineid = 'bbbbbbb'

[解决办法]

--前段时间有做过类似的功能
--视图,想法来源:select * from a for update
update (视图) a
set a.name=a.name_new
....
--说是视图,其实是复杂的关联语句
select a.* from a
left join b on a.id=b.id
...
--最后还有一点要注意,就是更新只能更新一张表的数据
--就是视图里面只能是表a 或者表b的,这个是update本身的限制
--希望对楼主有用...