ORACLE中合并两张表中内容(结构相同)

QQ截图20141021174241

有两张表,这种情况:第一张表和第二张表中的结构是相同的,都有主键列,第一张表中的数据和第二张表中的数据是互补关系。

ORACLE 9I开始支持MERGE语句,可以用以下方式以补充形式完成两表合并:

1.

MERGE INTO test_to
USING test_from
ON ( test_to.id = test_from.id ) — 条件是 id 相同
WHEN MATCHED THEN UPDATE SET test_to.val = test_from.val — 匹配的时候,更新

这种方式是匹配id进行合并,前提是两张表中id一致,只是字段中的数据不同。也可以在ON后面加其他判断条件,比如is not null。

 

2.

MERGE INTO test_to
USING test_from
ON ( test_to.id = test_from.id ) — 条件是 id 相同
WHEN NOT MATCHED THEN INSERT VALUES(test_from.id, test_from.val) — 源表有,目标表没有,插入

这种方式是补充插入来合并,id不存在的将插入到目标表。

根据情况选择不同的插入方式。