你这句话有什么意义?R.role_id 似乎应该是主健,唯一的记录已经确定,set R.right=标量 也是确定的
表M有什么用?把你的那句SQL翻译成ORACLE支持的语句应该是这样: update t_sys_right_role R 
    set right = ( select '3' 
                    from t_sys_modules M
                   where module_id = R.module_id
                     and parent_id = '021211030640')
  where R.role_id = '20030409032744'
但是这解释得通吗?

解决方案 »

  1.   

    UPDATE语句的语法错误了:
       update t_sys_right_role set right='3' where role_id='20030409032744'and       module_id in (select module_id from t_sys_modules parent_id='021211030640');
     用子查询做条件就可以了,能实现的
     试一下吧!
      

  2.   

    不是这个意思!
    我的role_id在这个表中不是主健,
    t_sys_right_role表的结构是这样的!!
    role_id
    module_id
    right
    role_id和module_id和起来为主健。
    我现在是要更新role_id = '20030409032744'并且父模块id=021211030640'的right='3'
    但t_sys_right_role表中没有夫模块id所以和t_sys_modules建立关联!!
    你的翻译我不明白!!但不应该是这样的!!
    role_id = '20030409032744'并且父模块id=021211030640'
    是条件!!
      

  3.   

    wshyhai(小浪子) :
      update t_sys_right_role set right='3' where role_id='20030409032744'and 
       module_id in (select module_id from t_sys_modules parent_id='021211030640');
      用这条语句不是能实现了?
      

  4.   

    wshyhai(小浪子) : 哦,少了个WHERE
      update t_sys_right_role set right='3' where role_id='20030409032744'and 
       module_id in (select module_id from t_sys_modules WHERE parent_id='021211030640');
      用这条语句不是能实现了?
      

  5.   

    update t_sys_right_role R set R.right=(select '3' from t_sys_modules M where M.module_id=R.module_id and M.parent_id='021211030640') where R.role_id='20030409032744';