oracle 怎么更新多个值 update A a set a.id = (select b.id from B b where a.name=b.name)

oracle 怎么更新多个值 update A a set a.id = (select b.id from B b where a.name=b.name),第1张

想办法保证赋值唯一就行了,否则聚合函数不能做UPDATE更新
如果select bid from B b group by bname中每一个bname只有唯一一个bid那么就可以
update A a set aid = (select DISTINCT bid from B b where aname=bname)
试试

办法有无数种,问题要搞明白慢在哪里?
慢在关联的修改上的话,很简单,将要更新的所有index什么的需要随着更新的所有东西先干掉。例如triger。改好了再建
慢在redo上的话,先做一个临时表,copy过去,修改,再tranc原来的表 apend nolog回去
还有一个问题,为什么要快?上亿的数据,没啥可怕呀。物理上不见得很大的表
必须要搞清楚多少时间你要修改完成,修改期间,哪些 *** 作会被阻挡。假设不是24X7的库,没啥大不了的


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13390114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存