麻烦问一下 现在我数据库里面有很有历史的记录  而这些记录里面的用户名都是老的用户名
现在我要替换成新的用户名 这个用什么方法比较快?比如  再老记录里面有几张表 职位表                                                        用户名    部门         职位
 01       销售部       销售员
 02       人事部       职员
 03       人事部       经理
出勤记录表用户名     上班时间         下班时间
 01      2010-1-9 9:00     2010-1-9 17:30
 02      2010-1-9 8:55     2010-1-9 17:45
 03      2010-1-9 8:53     2010-1-9 17:55
想对应的用户表用户名     姓名
 01        张三
 02        李四
 03        王五现在我有新的用户名用户名     姓名
 AA        张三
 BB        李四
 CC        王五
我现在要用新的用户名AA  去 替换 01 这些老的用户名
麻烦问一下 在oracle里面怎么去实现?
用decode的吗  这个具体语法应该怎么写?还有就是表很多  有人说建一张新用户和老用户的对照表比较简单
但是用户也有几百个  建对照表得话 只能一个用户一个用户得录数据吗
有什么简单的方法没有啊谢谢了

解决方案 »

  1.   

    建一张新用户 usertable 如:
    用户名    姓名 
    AA        张三 
    BB        李四 
    CC        王五 
    用select 'update 你要更新的旧表 set 用户名='||t.用户名||' where 用户名='01';' from usertable t。搞一个sql脚本,调用一下就可以了。
      

  2.   

    可能update不行吧  第一 没一张表里面一个用户的记录不知一条 起码都是几百条
    还有就是这么多张表  每个都update那要怎么整了
      

  3.   

    如果人名唯一的话
    可以
    update 表 set 用户名=(select 新id from 新表 where 新名=老名) 。呵呵
      

  4.   

    才几百条数据,根本没有什么大不了的,update完全可以,不想做脚本,就新建一个表ustable
    用户名    姓名     原始用户名
    AA        张三 
    BB        李四 
    CC        王五 
    然后update ustable u set 原始用户名= (select 用户名 from 原始对应的用户表 a where a.姓名 
    =u.姓名) where exists( 
      select 1 from 原始对应的用户表  where a.姓名 =u.姓名) 然后根据这个更新后的ustable表,用上面的语句(你自己修改一下)进行更新其他所有的表