表A:   id, name, number
表B:   id, name现在表A中id和name均有数据,仅number为空。现在想批量更新number列的值=表B的id  (注明:表A的id不等于表B的id)
我写mysql update 表A set number = (select id from 表B order by id);  出错。请问应该怎么写这个SQL

解决方案 »

  1.   

    update 表A set number  = 只能为一个值.
    你到底想做什么,比如说
    表A id  name  number
        1    aa    
        2    bb
        3    cc
    表b id name 
        1   aaa
        2   bbb
        3   ccc你是想跟新完了以后实现这样的效果么??表A id  name  number
        1    aa    1
        2    bb    2
        3    cc    3
    ????如果是,应该得用到存储过程.
      

  2.   

    如2F,更新依据是name相同?UPDATE 表A SET number = (SELECT id FROM 表B WHERE 表A.name = 表B.name)
      

  3.   

    UPDATE 表A SET number = 表B.id WHERE 表A.name = 表B.name;
      

  4.   

    谢谢各位赐教, 我想做的就是如2楼所说:
    表A id  name  number 
        1    aa    
        2    bb 
        3    cc 
    表b id name 
        1  aaa 
        2  bbb 
        3  ccc update之后
    ------------------------
    表A id  name  number 
        1    aa    1 
        2    bb    2 
        3    cc    3 但是表A和表B的name是不相同的,所以不能做where表B.name = 表A.name,非常谢谢2楼赐教,那用存储过程应该怎么写
      

  5.   

    update a,b set a.number=b.id where a.name=left(b.name,2);
      

  6.   


    id又不同,name也不同,你B表就这么两个字段,你的关联条件到底是什么吗?
      

  7.   

    没有关联条件,我只是想有没有SQL写法可以做到,不行的话另行想办法
      

  8.   

    用存储过程就简单了,循环取B.id,然后update A set number就行了。