table1中name字段的值update成table2中的name字段的值
的前提條件是什麼?還是毫無條件的?

解决方案 »

  1.   

    在两个表date一样的情况下,既table1.date=table2.date
      

  2.   

    update table1 set name = (select name from table2 where date = table1.date)
      

  3.   

    还是错误
    提示信息:
    ORA-01427:Single-row subquery returns more than one row
      

  4.   

    那是因为table1.date=table2.date 的资料不是一一对应稍改一下:
    update table1 set name = (select name from table2 where date = table1.date and rownum = 1)
      

  5.   

    update table1 set name = (select max(name) from table2 where date = table1.date)
      

  6.   

    谢谢各位的解答,不过还是有问题!to:txlicenhe(马可)
    你的那条sql语句执行之后,table1表中name字段的值全部都是table2表中第一条记录name字段的值.
    而我要求的是,table1表中的name的值要和table2表中的name值一一对应。to:hero1981(英雄)
    你的那条sql语句执行之后,table1表中name字段的值全部都是table2表中name字段的最大值.看看是否有正确解决的办法,谢谢各位了!
      

  7.   

    update table1 set name = (select name from table2 where date = table1.date 
    and name = table1.name and rownum = 1)
      

  8.   

    to:baojianjun(包子),谢谢你的解答 你的语句没有达到要求啊,因为update 之前table1和table2中的name字段的值是不一样的,根本就不可能有name=table1.name 的条件,你这条Sql语句执行后,table1表中的name字段全部为空了。
      
     看看是否有正确解决的办法,谢谢各位了!
      

  9.   

    --测试:
    create table tb1(id char(2),name varchar2(6));
    insert into tb1 values('01','张一');
    insert into tb1 values('02','李二');create table tb2(id char(2),name varchar2(6));
    insert into tb2 values('01','张三');
    insert into tb2 values('01','张四');
    insert into tb2 values('02','李五');
    insert into tb2 values('02','李六');
    insert into tb2 values('02','李七');update tb1 set name = (select name from tb2 where id = tb1.id and rownum = 1);
    select * from tb1;
    /*结果
    ID NAME
    -- ------
    01 张三
    02 李五
    */drop table tb1;
    drop table tb2;
      

  10.   

    谢谢txlicenhe(马可)
    你的方法没有问题,可能是我前面做的时候,数据库的数据有点问题,没有做出正确的结果,现在好了!