帮各位大侠出手相救,帮忙处理一下这个问题:有一个表users有如下字段id,uuid,name,creat_by;
比如有如下数据:id  uuid  name  creat_by
1   11aa  admin         
2   11ab  liu     11aa
3   11ac  zhang   11aa
4   11ad  chen    11ab原来是creat_by跟uuid关联的,现在改成creat_by跟id关联。所以creat_by字段里面的值就要相应的改成id字段的值。比如2对应这条记录的creat_by应该改为1,4对应的这条记录的creat_by要改为2转换后的效果应该如下
id  uuid  name  creat_by
1   11aa  admin         
2   11ab  liu     1
3   11ac  zhang   1
4   11ad  chen    2这个转换语句该怎么写啊??

解决方案 »

  1.   

    select a.id,a.uuid ,a.name,(case when b.id is null then ''  else cast(b.id as varchar(5))  end ) as creat_by
    from tb a left join tb b on a.creat_by=b.uuid
      

  2.   

    update users set creat_by=id/2
      

  3.   

    to all:我的意思是要有个UPDATE语句能够将creat_by的改成相应的值
      

  4.   

    update a set creat_by=b.id from users a join users b on a.uuid=b.creat_by
      

  5.   

    to cngram(阿琦):我将你给的语句执行了一下,但报错:数据库执行错误 # 1064。从数据库的响应:
    You have an error in you SQL syntax;check tha manual that corresponds to you MySQL server version for the right syntax to use near 'form users a join users b on a.uuid=b.creat_by at line 1;我知道你的这条语句本身没问题,但不知道为什么在MYSQL里就报错。为什么啊?
      

  6.   

    是你太粗心, 把 from 写成 form 了.
      

  7.   

    不好意思,错五信息应该是:
    数据库执行错误 # 1064。从数据库的响应:
    You have an error in you SQL syntax;check tha manual that corresponds to you MySQL server version for the right syntax to use near 'from users a join users b on a.uuid=b.creat_by at line 1;是我在输入错误信息的时候敲错了。我发现自身表关联自身是不可以更新的,包括SQLSERVER,ORACLE.
    在SQLSERVE中可以通过如下方式实现:
    select * into #users from users 
    update users set creat_by=#users.id from #users where users.creat_by=#users.uuid但上述语句在MYSQL中不能执行。
    所以我想先把数据导入到SQLSERVER后,将数据处理之后,再导回MYSQL中。
    但在将SQLSERVER导回到MYSQL时又报了个错。大意是说:不能用insert方式插入blob型数据。我估计是由于数据表中有text类型字段导致。但很奇怪从mysql到sqlserver是不报错,从sqlserver到mysql就报错??
    各位大侠看看还有没有办法帮我想想?
    谢谢大家。