整行不匹配时的oracle合并语句[重复]

Posted

技术标签:

【中文标题】整行不匹配时的oracle合并语句[重复]【英文标题】:oracle merge statement when entire row not matched [duplicate] 【发布时间】:2015-08-14 10:32:38 【问题描述】:

我在 oracle 中有两个表。 一个包含 600000 行,其他临时表包含超过 600000 行。 如果使用合并语句在临时表中可用任何新行,我想从临时表插入到实际表。 (或者还有其他更好的方法吗?) (两个表的结构相同,大约有 15 列,而不是检查一个主键,我想检查所有字段的匹配条件)。

任何人都可以帮忙..

【问题讨论】:

合并似乎是要走的路 嗨,谢谢...你能帮我举一个检查多个字段的例子吗 【参考方案1】:

你不能像往常一样使用 MERGE:

MERGE INTO bonuses b
 USING (
   SELECT employee_id, salary, dept_no
   FROM employee
   WHERE dept_no =20) e
ON  (b.employee_id = e.employee_id
 AND b.dept_no = e.dept_no)
WHEN MATCHED THEN
   UPDATE SET b.bonus = e.salary * 0.1
WHEN NOT MATCHED THEN
   INSERT (b.employee_id, b.bonus)
   VALUES (e.employee_id, e.salary * 0.05)
   WHERE (e.salary > 40000);

但在“ON”子句中只需加入所有你想要的列。

使用 MERGE 绝对是要走的路。

【讨论】:

以上是关于整行不匹配时的oracle合并语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

带条件的 Oracle SQL 合并语句

Oracle---使用日常

我的oracle生涯基础内容篇

表格中删除整行怎么把整个表格数据都删掉了

oracle中,将两个select语句的结果作为一个整体显示出来

xslt2+ 如何将组与任何匹配的元素组合并删除元素的重复项