
1、构建临时表进行主键关联更新
需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新 *** 作:
ps:c,d是需要更新的 *** 作,e,f是条件。必须强调的是id必须是主键
1、构建临时表进行主键关联更新
需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新 *** 作:
ps:c,d是需要更新的 *** 作,e,f是条件。必须强调的是id必须是主键
UPDATE A
SET A1 = t2.B2 ,
A2 = t2.C1
FROM A INNER JOIN (
SELECT B.B1,B.B2,C.C1
FROM B left join C on B.B3 = C.C3) t2
ON A.A3 = t2.B1
WHERE A.A4 = 1
UPDATE oaaccounts
SET F_UseType = t2.F_Type
FROM oaaccounts INNER JOIN OaPayOnline t2
ON F_Order_Id = t2.acid
--以下是我根据你的描述,做的测试,希望对你有帮助:\x0d\x0a\x0d\x0a-- 新建一张表kongxianji:\x0d\x0aCREATE TABLE kongxianji(a VARCHAR2(200))\x0d\x0a\x0d\x0a-- 插入数据,然后提交:\x0d\x0aINSERT INTO kongxianji (a) VALUES ('12345(6)789')\x0d\x0aINSERT INTO kongxianji (a) VALUES ('12345(67)89')\x0d\x0aINSERT INTO kongxianji (a) VALUES ('12345(678)9')\x0d\x0aCOMMIT\x0d\x0aSELECT * FROM kongxianji\x0d\x0a\x0d\x0a-- 把a中的括号去掉,然后提交,到这一步可以查看表中数据的变化情况:\x0d\x0aUPDATE kongxianji SET a = replace(a,substr(a,instr(a,'('),(instr(a,')')-instr(a,'(')+1)),'')\x0d\x0aCOMMIT\x0d\x0a\x0d\x0aSELECT * FROM kongxianji欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)