4=2+2
用part_count + shipment.part_count=4 update了

解决方案 »

  1.   

    part_count + shipment.part_count
    怎会是2+2呢
    应该是5+2吧
      

  2.   

    create table inventory (part_no integer, part_count integer);
    insert into inventory values(1,5);
    insert into inventory values(3,6);create table shipment (part_no integer, part_count integer);
    insert into shipment values(1,2);
    insert into shipment values(2,2);MERGE INTO inventory
        USING shipment
        ON (inventory.part_no = shipment.part_no)
    WHEN MATCHED THEN
       UPDATE SET part_count = part_count + shipment.part_count
    WHEN NOT MATCHED THEN
       INSERT VALUES (shipment.part_no,shipment.part_count);commit;select * from inventory;  PART_NO   PART_COUNT
    ----------              ----------
          1                      7
          3                      6
          2                      2
      

  3.   

    你执行前先检查inventory和shipment,看里面的记录是什么
      

  4.   

    检查记录是否正确,检查sql语句是否正确
      

  5.   

    我将上面的代码COPY了,执行结果还是不对.是不是数据库有问题.http://www.zdnet.com.cn/developer/code/story/0,2000081534,39235314,00.htm
      

  6.   

    正确的是
    select * from inventory;  PART_NO   PART_COUNT
    ----------              ----------
          1                      4
          3                      6
          2                      2
      

  7.   

    create table inventory (part_no integer, part_count integer);
    insert into inventory values(1,5);
    insert into inventory values(3,6);create table shipment (part_no integer, part_count integer);
    insert into shipment values(1,8);
    insert into shipment values(2,2);执行MERGE后的结果为什么会是:
    select * from inventory;  PART_NO   PART_COUNT
    ----------              ----------
          1                     16
          3                      6
          2                      2
      

  8.   

    我试一下,不管你怎么写part_count = part_count + shipment.part_count,好像与inventory表没有关系,只与shipment表有关系。
      

  9.   

    是不是要注明表呀
    UPDATE SET part_count = inventory.part_count + shipment.part_count
      

  10.   

    同意楼上的,注明表果然成了7
    SQL> MERGE INTO inventory
      2      USING shipment
      3      ON (inventory.part_no = shipment.part_no)
      4  WHEN MATCHED THEN
      5     UPDATE SET part_count = part_count + shipment.part_count
      6  WHEN NOT MATCHED THEN
      7     INSERT VALUES (shipment.part_no,shipment.part_count);DoneSQL> commit;Commit completeSQL> select * from inventory;                                PART_NO                              PART_COUNT
    --------------------------------------- ---------------------------------------
                                          1                                       4
                                          3                                       6
                                          2                                       2
    SQL> MERGE INTO inventory
      2      USING shipment
      3      ON (inventory.part_no = shipment.part_no)
      4  WHEN MATCHED THEN
      5     UPDATE SET part_count = inventory.part_count + shipment.part_count
      6  WHEN NOT MATCHED THEN
      7     INSERT VALUES (shipment.part_no,shipment.part_count);DoneSQL> commit;Commit completeSQL> select * from inventory;                                PART_NO                              PART_COUNT
    --------------------------------------- ---------------------------------------
                                          1                                       7
                                          3                                       6
                                          2                                       2