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
是不是要注明表呀 UPDATE SET part_count = inventory.part_count + shipment.part_count
同意楼上的,注明表果然成了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
怎会是2+2呢
应该是5+2吧
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
select * from inventory; PART_NO PART_COUNT
---------- ----------
1 4
3 6
2 2
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
UPDATE SET part_count = inventory.part_count + shipment.part_count
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