`

Oracle中将一个表中的字段值复制到另一个表的字段中

阅读更多

 

说明:

1、mw_app.mwt_ud_pd_sb_rh_yxwz表 中whbz 与mw_sys.mwt_pd_deps表 中的obj_id 关联

2、mw_app.mwt_ud_pd_sb_rh_yxwz表 中objid与mw_app.MWT_UD_PD_SB_RH_XL表中的obj_id关联

要实现的效果是:将mwt_pd_deps deps 中bmqc字段的值复制到MWT_UD_PD_SB_RH_XL表中的whbzmc中

实现该功能的SQL语句:

update  mw_app.MWT_UD_PD_SB_RH_XL xl

set xl.whbzmc=(select deps.bmqc from mw_app.mwt_ud_pd_sb_rh_yxwz y,mw_sys.mwt_pd_deps deps 

where y.whbz=deps.obj_id and y.yxwzlb='5F017131-22C2-48E5-9EA2-2897DB60FBB8-00797' and y.objid=xl.obj_id);

 

注:上面的SQL语句在特定的情况下,正常无误,但如果数据不一致,可能造成数据更新有问题,会将不关联的记录也全部更新。(虽然上面是批量更新,但其本质仍然是一条记录一条记录的更新)

上面的表因为mw_app.MWT_UD_PD_SB_RH_XL 表的数据都在mw_app.mwt_ud_pd_sb_rh_yxwz表中,所以刷新数据不会存在问题,但如果

mw_app.MWT_UD_PD_SB_RH_XL 表中的数据有的不在mw_app.mwt_ud_pd_sb_rh_yxwz表中,那么就有可能造成mw_app.MWT_UD_PD_SB_RH_XL 表与mw_app.mwt_ud_pd_sb_rh_yxwz 不关联的记录也会被更新,而我们要的是关联的记录才会刷新数据。

为此可以增加额外的条件:

update  mw_app.MWT_UD_PD_SB_RH_XL xl

set xl.whbzmc=(select deps.bmqc from mw_app.mwt_ud_pd_sb_rh_yxwz y,mw_sys.mwt_pd_deps deps 

where y.whbz=deps.obj_id and y.yxwzlb='5F017131-22C2-48E5-9EA2-2897DB60FBB8-00797' and y.objid=xl.obj_id)

where exists

(select deps.bmqc from mw_app.mwt_ud_pd_sb_rh_yxwz y,mw_sys.mwt_pd_deps deps 

where y.whbz=deps.obj_id and y.yxwzlb='5F017131-22C2-48E5-9EA2-2897DB60FBB8-00797' and y.objid=xl.obj_id);

加上where exists,在没有关联记录的时候上面的update就不会更新,更新的时候就不会存在问题了。

 

建议:在批量更新数据的时候最好能加上where exists条件以防不一致的数据更新。

 

 

 

 

 

 


 

分享到:
评论

相关推荐

    oracle中将列拼接字段函数

    select WMSYS.WM_CONCAT(contractid) from fin_cbs_manager select contractid from fin_cbs_manager

    oracle实验报告

    在命令的where子句中给出1=2,表示条件不可能成立,因而只能复制表结构,而不能复制任何数据到新表中去。另外,还可以复制一个表的部分列定义或部分列定义及其数据。 三、 Oracle数据库数据查询 1、单表查询 2、多...

    oracle数组实现

    基于oracle的数组实现,使用自定义类型的方式实现

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    8.5.2 例1:从前一行中返回一个值 203 8.5.3 理解数据行的位移 204 8.5.4 例2:从下一行中返回一个值 204 8.6 First_value和Last_value 205 8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    说明:Oracle中要删除一个用户,必须要具有dba的权限。而且不能删除当前用户,如果删除的用户有数据对象,那么必须加上关键字cascade。 用法:drop user 用户名 [cascade] 四、 用户权限与角色 1. 权限 Oracle中权限...

    字符串分割成数组函数(plsql function)

    将字符串分割成数组: ...用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from table(my_split('7369,7499,7521,7844',',')));

    Oracle重复数据清理

    最近做了一个项目,需要从老数据库中将数据迁移到新数据库,迁移后发现除主键不同外,其它字段有重复。最后终于找到了一个oracle函数,推荐给大家,希望对大家有帮助

    java实例对数据库的clob字段操作

    该类中包含有多个方法对数据库中的clob字段进行查询、...使用的是myeclipse8.6,oracle11g,测试的时候执行手动建个表xml_buffer,包含id、xmlcontent字段即可,然后在构造函数中将用户名和密码修改为自己数据库的即可

    数据导入导出1.1

    数据头部可设置为出力字段,字段名,字段类型中的任意一个和多个  2.可设置改行,超过最大列256列时自动换行  3.可设置出力方向,横向和纵向出力  4.导出数据到新的Excel中  5.导出数据到已打开的Excel的任意...

    数据导入导出工具 v1.8.zip

    软件最大的功能是将数据库中的数据直接导出到打开的任意表格中,软件还支持从任意打开表格中将数据导入到数据库中、将变更前的数据先保存到XML中、以及数据变化后,可以变化的数据导出到Excel中,将变更的字段标色以...

    经典全面的SQL语句大全

     1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)  法一:select * into b from a where 1<>1  法二:select top 0 * into b from a  2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access...

    SQL语法大全

    MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加 引用以上函数的方法: sql="select sum(字段名) as 别名 from 数据表 where 条件表达式" set rs=conn.excute(sql) 用 rs("别名") 获取统的计值...

    ssh(structs,spring,hibernate)框架中的上传下载

     我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,然后获取该字段的引用,通过这个引用更改其值。所以要完成对...

    数据库设计培训.pptx

    数据库中的每个表都代表一个主题,由一些相关的字段组成,数据的冗余度尽可能小,并且在整个数据库中通过一个具有唯一值的字段表示。 数据的完整性强加在字段、表和关系级。这些完整性帮助确保数据结构和它们的值...

    Oracle 下的开发日积月累

    Oracle SQL语句中的Update可以和SEQUENCE联合使用,以达到更新某字段的值连续编号,而不需要使用游标去逐条遍历更新数据库记录。例如 update sample set id = seq_id.nextval; Oracle中的select语句允许使用...

    会议管理系统数据库设计文档.doc

    在oracle数据库设计中,一 般来说,对于定长的字符数据字段,取字符类型(char),对于不定长的,取变长字符类 型(varchar)。 2.对于以分类形式出现的字段,建议不使用字符类型,而使用数字类型。如:货物 是否配送为...

    spring-mybatis-oracle-performance-issue

    我注意到,当尝试将一个Integer字段(可能为null)插入NUMBER列时,性能会严重下降。 有关定时示例以及何时提供jdbcType与何时不在xml中之间的计时差异,请参见此项目中的DefaultTimerService。 表规范可以在找到。...

    JDiy开发框架与javaWeb建站平台v1.0

     通过JDiyContext的newInstance静态方法读取JDiy配置文件,构造一个JDiyContext上下文对象,您可轻松的将JDiy应用于javaSE开发环境,使用JDiy框架方便的对底层数据库进行读写操作(数据的增删改查,附加XML字段、...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 ...

Global site tag (gtag.js) - Google Analytics