当前位置: 代码迷 >> Oracle开发 >> 多表更新有关问题,附有源码
  详细解决方案

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

热度:14   发布时间:2016-04-24 07:04:10.0
多表更新问题,附有源码
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本身的限制
--希望对楼主有用...
  相关解决方案