说明:
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条件以防不一致的数据更新。
分享到:
相关推荐
本教程将聚焦于如何使用Java编程语言实现在Oracle同一数据库内将一个表中的文件备份到另一个表,这对于初学者来说是一次极好的学习机会。 首先,我们需要理解Oracle数据库的基础。Oracle数据库是一个关系型数据库...
本文将深入探讨如何在Oracle中将一个用户的所有表的权限授予另一个用户,这一过程通常在PL/SQL环境下通过执行特定的命令来完成。下面我们将详细解析这一操作的步骤、原理以及可能遇到的问题。 ### Oracle中的权限...
例如,遍历一个游标并添加每个记录的值到一个字符串中。 6. **XMLAGG() 函数**: 虽然主要设计用于XML处理,但`XMLAGG()`也可用于字符串连接。它返回一个XML串,可以进一步转换为纯文本: ```sql SELECT ...
这种方法在处理大量数据时非常有用,特别是在需要将多个值汇总到一个字段中的场景下。 ### 标题理解:“oracle某个字段多行记录转化为一行” 此标题明确指出了解决的问题:在Oracle数据库中,如何将特定字段的多行...
这段代码的作用是从`fin_cbs_manager`表中选取`contractid`列的所有值,并使用`WMSYS.WM_CONCAT`函数将这些值拼接成一个字符串。默认情况下,`WMSYS.WM_CONCAT`会使用逗号`,`作为分隔符,但如果需要自定义分隔符,则...
2. 在 Action 中将传入的 ActionForm 中的文件字段赋给 VO 值对象,并调用业务代理类的上传方法。 3. 在业务代理类中,调用 DAO 中的上传方法,将大对象上传到数据库中。 在 DAO 中,我们需要使用 ...
第一步:创建一个数据库可以访问的目录(注意:这个目录是数据库服务器上的目录,不是客户机上的) -- Create directory create or replace directory 图片目录 as 'E:\照片'; 第二步:将图片文件放入刚建好的...
` 定义了一个名为 `v_table` 的类型,它是一个通过BINARY_INTEGER索引的VARCHAR2(30)类型的表。 - **初始化数组**: `my_table v_table;` 创建一个 `v_table` 类型的变量 `my_table`。 - **赋值和遍历**: 循环中给 `...
代码中首先定义了一个名为`t_unit`的记录类型,包含两个字段:`bit_unit`和`bit`,分别存储中文大写的单位和十进制位。然后定义了`t_tab`类型,这是一个由`t_unit`记录组成的表,用于存储各个数字位对应的中文大写...
其中,oracle_fdw是一个提供Oracle与PostgreSQL之间数据迁移的外部表功能的工具,而ora2pg是另一个专门用于将Oracle数据库迁移到PostgreSQL的迁移工具。 文档的【部分内容】中涉及了多个主题,例如数据库迁移中对...
在命令的where子句中给出1=2,表示条件不可能成立,因而只能复制表结构,而不能复制任何数据到新表中去。另外,还可以复制一个表的部分列定义或部分列定义及其数据。 三、 Oracle数据库数据查询 1、单表查询 2、多...
在MySQL数据库中,经常遇到需要处理以逗号分隔的字段值的情况,这些字段通常用于存储多值数据,比如在本例中,`related_shop_ids`字段存储了多个商店ID,用逗号分隔。本篇文章将详细讲解如何将这样的字段拆分成多个...
3. 修改job_id的子类为list,属性列表中的元素任意添加一个元素及值。 七、日历 日历是Oracle EBS FORM开发中的一个重要概念。日历可以显示日期类型的数据。下面是一个简单的日历示例: 1. 添加一个触发器,KEY-...
例如,如果一个字段应该是数字但实际是字符串形式,可以在“SQL函数”中指定转换逻辑。例如,如果某列数据应该是数字,但在文本文件中是以字符串形式存储的,则可以使用如下设置: - 在SQL函数中,用`TO_NUMBER(#)`...
`UTL_RAW.CAST_TO_VARCHAR2`是Oracle提供的一个包中的函数,用于将RAW或BLOB类型的二进制数据转换为VARCHAR2字符串类型。这一步骤对于将BLOB转换为CLOB至关重要,因为CLOB本质上是一种字符数据类型,而不能直接与二...
连接查询是指将两个或多个表中的数据合并到一个结果集中。根据连接类型的不同,可以分为内连接(INNER JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL OUTER JOIN)。 **案例五:查询岗位为‘CLERK’的...
这是一个图形化的数据库配置助手,可以指导用户完成整个数据库创建过程。 #### 六、Oracle中的裸设备概念 - **定义**: 裸设备是指绕过操作系统文件系统直接访问的存储空间。这种设备通常用于Oracle数据库的数据文件...
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 例子:使用...
例如,将多个产品销售额合并到一个“值”列中,同时创建一个“年份”列来区分不同年份的销售额。 3. 自定义SQL查询:在早期版本的Oracle或不支持Pivot的情况下,我们可以使用CASE语句、GROUP BY和聚合函数(如MAX、...