ORACLE数据库使用update进行批量更新
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE数据库使用update进行批量更新
最近有一个涉及ORACLE的项目要求使用一张表的某几个列对另一张表的几个列进行更新。
现将自己的编程经验总结出来,供大家参考和交流。
要求:使用TB_02中的Z01,ZD02字段对TB_01中的FD01,FD02字段进行更新。
CREATE TABLE TB_01
(
ID NUMBER,
RQ VARCHAR(6),
FD01 NUMBER(20) ,
FD02 NUMBER(20) ,
FD03 VARCHAR2(1)
)
CREATE TABLE TB_02
(
ID NUMBER,
RQ VARCHAR(6),
ZD01 NUMBER(20) ,
ZD01 NUMBER(20)
)
一、对TB_01表全表更新
TB_01.FD01=TB_02.ZD01
TB_01.FD02=TB_02.ZD02
--更新TB_01表中的FD01,FD02字段
UPDATE TB_01 A SET (A.FD01,FD02) = (SELECT B.ZD01,
B.ZD02 FROM TB_02 B WHERE A.ID = B.ID)
二、对TB_01表中FD03='1'的记录进行更新
UPDATE TB_01 A --更新ZGZK_T_DHTJ表中的YNSE_HJ,应纳税额合计字段和YSXSSR_HJ应税销售收入合计
UPDATE TB_01 A SET (A.FD01,FD02) = (SELECT B.ZD01,
B.ZD02 FROM TB_02 B WHERE A.ID = B.ID) WHERE A.FD03='1'
注意:TB_02最好建有ID的索引,否则速度会很慢。
CREATE INDEX IDX_TB_02_ID on TB_02(ID);
三、根据关键字段ID,RQ进行更新
UPDATE (SELECT A.FD01,A.FD02,B.ZD01,B.ZD02 WHERE A.ID=B.ID AND A.RQ=B.RQ )
SET A.FD01=B.ZD01,A.FD02=B.ZD02
注意:TB_02最好建关键字段ID,RQ的UNIQUE索引,否则速度会很慢。
CREATE UNIQUE INDEX IDX_TB_02_KEY on TB_02(ID,RQ);。