请帮忙看一下两段SQL语句是否一样

zhujiaozi 2018-12-10 06:56:50
第一段
update pay_source_all p set (bfzt,djqrsj,zfzhid,qp1,qp2,qp3,zflx,zxcw)=(select i.bfzt,i.djqrsj,i.zfzhid,i.qp1,i.qp2,i.qp3,i.zflx,i.zxcw
from pay_SOURCE i
where i.zdlsh=p.zdlsh and i.yhzh=p.yhzh and i.hm=p.hm and to_char(i.je,'999999.99')=to_char(p.je,'999999.99') )
where exists (select 1
from pay_SOURCE i
where i.zdlsh=p.zdlsh and i.yhzh=p.yhzh and i.hm=p.hm and to_char(i.je,'999999.99')=to_char(p.je,'999999.99')
) and p.qp3='201811278756420'

第二段

merge into pay_source_all p
using (select i.bfzt,i.djqrsj,i.zfzhid,i.qp1,i.qp2,i.qp3,i.zflx,i.zxcw,i.zdlsh,i.yhzh,i.hm,i.je from pay_SOURCE i ) t
on ( t.zdlsh=p.zdlsh and t.yhzh=p.yhzh and t.hm=p.hm and to_char(t.je,'999999.99')=to_char(p.je,'999999.99') and p.qp3='201811278756420')
when matched then
update set p.bfzt = t.bfzt , p.djqrsj=t.djqrsj,p.qp1=t.qp1,p.qp2=t.qp2,p.qp3=t.qp3,p.zflx=t.zflx,p.zxcw=t.zxcw;
...全文
125 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2018-12-12
  • 打赏
  • 举报
回复
效果是一样的,要注意的是,源表的数据,必须是唯一的。
Mricoo_周 2018-12-11
  • 打赏
  • 举报
回复
没啥区别,效果是一样的,可能效率会不一样 ,具体看表的体量
yaiger 2018-12-11
  • 打赏
  • 举报
回复
测试一下就行了
不过merge into要仔细测一下,效率比较高,但是容易写错,要当心

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧