日期:2014-05-17  浏览次数:21087 次

将B表结果插入A表,如果A存在则将A中的一个字段值加1,不存在则插入新纪录
TableA
(
  ID          NUMBER(13) not null,
  STATE       NUMBER(4) not null
  VALUE       NUMBER(4) not null
)
ID和State是主键

TableB
(
  ID          NUMBER(13) not null,
  STATE       NUMBER(4) not null,
  ..
  ..
  ..
)
ID和state是主键


我需要查出表B中的记录,  如果A中ID和State存在则直接将 A中对应记录的 Value加1,如果不存在则插入一条新的记录到A,
怎么写语句呢?

例如:
A有3条记录
1,2, 1
2,1, 1
3,1, 1

B有4条记录
1, 2, ....
2, 1, .....
4, 4, .....
4, 1, ....
那么我执行后,A表应该变为
1,2, 2
2,1, 2
3,1, 1
4, 4,  1
4, 1,  1
------解决方案--------------------
MERGE INTO tableA A
  USING (与tableB的匹配条件) B
  ON (A.XX=B.XX)
  WHEN MATCHED THEN
  UPDATE
  SET A.VALUE= A.VALUE+1  
  WHEN NOT MATCHED THEN
  INSERT
  (FIELD1,..)
  VALUES
  (1,...);