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

将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,...);