update b set qty=nvl((select a.qty+b.qty from a where a.id=b.id),b.qty);

解决方案 »

  1.   

    update testc c set c.name=c.name+(select a.name from testa a where a.id=c.id)
      

  2.   

    不好意思,用了我自己的测试表update b set b.qty=b.qty+(select a.qty from a where a.id=b.id)
      

  3.   

    UPDATE B b  
         SET b.qty=b.qty+(SELECT a.qty FROM A a WHERE a.id=b.id);
      

  4.   

    UDATE B SET B.qty=B.qty+NVL((SELECT A.qty FROM A WHERE A.id=B.id),0) WHERE B.id=A.ID
      

  5.   

    问题追加:首先肯定一楼写的应该是正确的,
    类似 b.qty=b.qty+(SELECT a.qty FROM A a WHERE a.id=b.id)应该会报错吧?问题,如果要在A上锁定范围a.id between 1 and 100,而在更新B的时候
    我也只想更新b.id between 1 and 100的是数据,而不是整个B表,
    请问是否有解呢?
      

  6.   

    update b set b.qty=b.qty+(select a.qty from a where a.id=b.id) where b.id between 1 and 100
      

  7.   

    update b set b.qty=b.qty+(select a.qty from a where a.id=b.id )where b.id between 1 and 100
      

  8.   

    update b set qty=nvl((select a.qty+b.qty from a where a.id=b.id),b.qty) where b.id between 1 and 100;