如何UPDATE 多条满足条件的纪录(急!)如: 表1
a  b c
1  1
2  1
3  2
4  2
5  2
6  2
7  3表2
b2  c2
1   2
2   5
3   6关联表1和表2的b 来更新表1 的 c
UPDATE后
得到表1a  b c
1  1 2
2  1 2
3  2 5
4  2 5
5  2 5
6  2 5
7  3 6如何写语句啊?

解决方案 »

  1.   

    update t1 set c = (select c2 from t2 where t2.b2 = t1.b)update t1 set c = (select c2 from t2 where t2.b2 = t1.b) where exists(select 1 from t2 where t2.b2 = t1.b)
      

  2.   

    update t1 set c = (select c2 from t2 where b2 = b);
      

  3.   

    实测成功:CREATE TABLE T16
    (
        a NUMBER(4),
        b NUMBER(4),
        c NUMBER(4)
    );
    INSERT INTO T16 (a, b) VALUES(1, 1);
    INSERT INTO T16 (a, b) VALUES(2, 1);
    INSERT INTO T16 (a, b) VALUES(3, 2);
    INSERT INTO T16 (a, b) VALUES(4, 2);
    INSERT INTO T16 (a, b) VALUES(5, 2);
    INSERT INTO T16 (a, b) VALUES(6, 2);
    INSERT INTO T16 (a, b) VALUES(7, 3);CREATE TABLE T17
    (
        b2 NUMBER(4),
        c2 NUMBER(4)
    );
    INSERT INTO T17 VALUES(1, 2);
    INSERT INTO T17 VALUES(2, 5);
    INSERT INTO T17 VALUES(3, 6);UPDATE T16 SET c = (SELECT c2 FROM T17 WHERE b2 = b);SELECT * FROM T16;
    结果:
      

  4.   


    merge into tb1 aa     --fzq1表是需要更新的表
    using fzq tb2            -- 关联表
    on (aa.b=bb.b2)        --关联条件
    when matched then       --匹配关联条件,作更新处理
    update set
    aa.c=bb.c2
    好用 merge into
      

  5.   

    多谢各位找到失败的原因了,原来关联表里有重复的数据(就是表2里的 数据)。。所以老是出错MERGE into都不行现在OK了。。