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);