(急)MERGE INTO 问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(急)MERGE INTO 问题相关的知识,希望对你有一定的参考价值。

merge into A t1 using
(select B.m from B
UNION ALL
select C.m from C) t2
ON (.....)
WHEN MATCHED WHEN
update
set ....
WHEN NOT MATCHED WHEN
insert......
values......
为什么 执行的时候告诉我t2里面的字段无效
初步怀疑是由于union all引起来的
求高手帮忙解决下
B.m 只是一个代表字段!其实是N个 MEGRGE编译执行没有问题 SELECT文编译执行没有问题 但是将这个MERGE放到PROCEDURE里面就编译没有问题 但是执行找不到t2里面的东西 去掉UNION ALL变成单个SELECT文 就好使得了 求高手指教 !
单独执行也是能执行plan 也好用
就是放在porcedure 里面就不能执行了
我现在就是想确认一下 procedure中的merge里面是不是不能用unoin之类的集合连接
做的项目涉及到金融 抱歉不能把原始数据粘出来

排错方法:
1.单独执行select B.m from B UNION ALL select C.m from C
看是否有结果,如果有结果的话,那么 on条件有问题,如果没有结果,请检查你的语句结果集
2.其他的从语法上面来看没有什么错误。

请楼主再确认
参考技术A   merge into A t1 using
  (with t as
  (
  select B.m from B
  UNION ALL
  select C.m from C
  )
  select * from t) t2
  ON (.....)
  WHEN MATCHED WHEN
  update
  set ....
  WHEN NOT MATCHED WHEN
  insert......
  values......
参考技术B 你的语句没意义,根据t2表更新A表,t2表里只有一个字段m 参考技术C 把你的原sql贴出来不行吗,还有详细的报错信息?
你贴的题目语法上都有错误,怎么判断原因:(
参考技术D 排错:
1.单独执行select
B.m
from
B
UNION
ALL
select
C.m
from
C
看否结结
on条件问题没结请检查语句结集
2.其语面看没错误
请楼主再确认

MERGE INTO 解决大数据量 10w 更新缓慢的问题

有个同事处理更新数据缓慢的问题,数据量超10w的量,更新速度太慢耗时较长,然后改成了 MERGE INTO 效率显著提高。

使用方法如下

MERGE INTO 表A USING 表B

ON 关联条件

WHEN MATCHED THEN 满足执行

WHEN NOT MATCHED THEN 不满足执行

 

如:

MERGE INTO TABLE_A
USING (SELECT * FROM TABLE_C WHERE STUTAS=1 AND TYPE=11) TABLE_B
ON (TABLE_A.id=TABLE_B.id)
when matched then update set TABLE_A.NAME=TABLE_B.NAME

 




以上是关于(急)MERGE INTO 问题的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE11g update和merge into 的区别

数据库系列—— merge into用法

ORACLE关于merge into用法!

如何替换merge into

merge into 只取第一行

merge into on条件能有Null判断嘛