admin管理员组

文章数量:1535948

需求:有一张DISCOUNT新增两个字段V_PARENT_INDUSTRY_CODE,V_PARENT_INDUSTRY_NAME,需要从另外一张表INDUSTRY中找到原行业编码的父行业编码以及名称更新入DISCOUNT中。
网上随便一搜多见为where子查询的方式更新,ORACLE与mysql的不同之处在于oracle在’UPDATE’之后只能跟一张大表,它可以是一张表也可以是几张表的关联合集但必须括起来成为一张宽表才能直接更新。
而mysql可以跟一段直接的SQL JOIN关联查询,不需要以伪表的形式去UPDATE。

--oracle
UPDATE 
--将你要更新的字段和需要更新为的值通过关联查询出来放入一张临时表内
(SELECT 
T.V_INDUSTRY_CODE V_INDUSTRY_CODE,
T.V_INDUSTRY_NAME V_INDUSTRY_NAME,
T.V_PARENT_INDUSTRY_CODE V_PARENT_INDUSTRY_CODE_O,
T.V_PARENT_INDUSTRY_NAME V_PARENT_INDUSTRY_NAME_O,
B.V_PARENT_INDUSTRY_CODE V_PARENT_INDUSTRY_CODE_N,
M.V_INDUSTRY_NAME V_INDUSTRY_NAME_N 
FROM DISCOUNT T 
INNER JOIN INDUSTRY B 
ON T.V_INDUSTRY_CODE = B.V_INDUSTRY_CODE 
INNER JOIN INDUSTRY M 
ON B.V_PARENT_INDUSTRY_CODE = M.V_INDUSTRY_CODE) X
--直接SET两字段相等即可关联更新
SET X.V_PARENT_INDUSTRY_CODE_O=X.V_PARENT_INDUSTRY_CODE_N,
X.V_PARENT_INDUSTRY_NAME_O=X.V_INDUSTRY_NAME_N;

OK!

本文标签: 多字ORACLEupdateJoin