同表内记录间的DB2更新语句

下面为您介绍的DB2更新语句用于同表内记录间的更新操作,该DB2更新语句供您参考,希望对您学习DB2更新语句方面能有所帮助。

两个DB2更新语句,用于更新同表内符合条件的其它记录。数据结构如下:

metadata_xt(id, subject_id, other_courseware_name, me_author, me_title, me_key, me_abstract)

其中id***;me_title也应***,但没有约束,因此有可能重复(但即便重复,同一me_title值的不同记录的其他字段必定相同,因此可以判作冗余,也即可以被过滤);其它均不***。所有字段非空。语句用于匹配的项为me_title,其模式可能为如下几个:
‘第__讲 精简版’, ‘第_讲 精简版’, ‘第__讲 %’ and !contains ‘精简版’; ‘第_讲 %’ and !contains ‘精简版’; 其它不以’第’开头的模式。

语句如下,主要目的是将me_title为’第__讲 精简版’的记录以me_title为仅相同开头(’第__讲…’)的另一条源记录更新。更新后记录为:
me_title:源记录的me_title + ‘ (精简版)’;
其它字段:源记录的相应字段值。

功能见注释:

— 首先更新用于匹配的关键项之外的字段
UPDATE DB2ADMIN.metadata_xt AS a
   SET (me_key,       — DB2中可以通过这种方式同时为多个字段赋值,具体缘由可能与values语句有关,
       me_abstract,     — 但是不确定,有待查证。
       subject_id,
       me_author
       ) =
         — 这里通过distinct保证返回***一条记录。子句中的where可以保证返回***的me_title值,但是
          — 由于之前提到的有可能出现的me_title重复的错误,需要在此处确保相同me_title仅返回一条记录。
          (SELECT distinct me_key, me_abstract, SUBJECT_ID, me_author
             FROM DB2ADMIN.metadata_xt AS b
            WHERE other_courseware_name = ‘房屋建筑学’ — 以该字段分组,每次update语句更新一组。
        AND b.ME_TITLE like ‘第%’         — 忽略me_title不以’第’开头的其它记录
              AND                   — 此处进行两条记录之间的me_title模式匹配
         ( left (b.ME_TITLE, 6) = left (a.ME_TITLE, 6)   — 匹配前六个字符,如’第01讲…’或’第55讲…’
         OR        — 若两条记录不都符合模式’第__讲%’,则源记录应为模式’第_讲%’,按如下匹配
          ( substr(a.ME_TITLE,3,1)=’0′ and substr(a.me_title, 4,3)=substr(b.ME_TITLE, 3, 3) )
         )
              AND b.ME_TITLE <> a.ME_TITLE)       — 要求两字段值不同,避免同记录的更新
WHERE other_courseware_name = ‘房屋建筑学’   — 限定要更新记录的分组
   AND me_title LIKE ‘第__讲 精简版’            — 这是要更新的记录的模式
   AND EXISTS     — 该语句非常重要,可以避免将无对应源记录的“精简版”记录的相应字段赋值为null。
          (SELECT 1      — 仅当有匹配的源记录时返回1
             FROM DB2ADMIN.metadata_xt AS c
            WHERE c.OTHER_COURSEWARE_NAME = ‘房屋建筑学’     — 同样进行限定,以下就与上面的子查询完全相同了,目的也无二致
        AND c.ME_TITLE like ‘第%’
        AND
         ( left (c.ME_TITLE, 6) = left (a.ME_TITLE, 6)
         OR
          ( substr(a.ME_TITLE,3,1)=’0′ and substr(a.me_title, 4,3)=substr(c.ME_TITLE, 3, 3) )
         )
              AND c.ME_TITLE <> a.ME_TITLE);
      
— 将所有其它字段更新完之后,再运行一遍,更新关键项:me_title。
UPDATE DB2ADMIN.metadata_xt AS a
   SET me_title =
          (SELECT distinct me_title
             FROM DB2ADMIN.metadata_xt AS b
            WHERE other_courseware_name = ‘房屋建筑学’
        AND b.ME_TITLE like ‘第%’
              AND
         ( left (b.ME_TITLE, 6) = left (a.ME_TITLE, 6)
         OR
          ( substr(a.ME_TITLE,3,1)=’0′ and substr(a.me_title, 4,3)=substr(b.ME_TITLE, 3, 3) )
         )
              AND b.ME_TITLE <> a.ME_TITLE) || ‘ (精简版)’ — 关键项的修改:源me_title + ‘ (精简版)’
WHERE other_courseware_name = ‘房屋建筑学’
   AND me_title LIKE ‘第__讲 精简版’
   AND EXISTS
          (SELECT 1
             FROM DB2ADMIN.metadata_xt AS c
            WHERE c.OTHER_COURSEWARE_NAME = ‘房屋建筑学’
        AND c.ME_TITLE like ‘第%’
        AND
         ( left (c.ME_TITLE, 6) = left (a.ME_TITLE, 6)
         OR
          ( substr(a.ME_TITLE,3,1)=’0′ and substr(a.me_title, 4,3)=substr(c.ME_TITLE, 3, 3) )
         )
              AND c.ME_TITLE <> a.ME_TITLE);
 

 

 

【编辑推荐】

DB2日期时间型数据类型介绍

分析DB2数据库的优势

DB2表空间管理

DB2数据库启动失败的解决方案

创建DB2管理服务器的两种情况

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/232166.html<

(0)
管理的头像管理
上一篇2025-04-20 01:12
下一篇 2025-04-20 01:13

相关推荐

  • 云服务器和云虚拟主机怎么选?云服务器和虚拟主机区别

    云服务器适合业务增长快、需弹性扩展的场景,而云虚拟主机适合预算有限、技术门槛低的小型静态网站或测试环境,二者核心区别在于资源独享性与运维复杂度,核心差异解析:从底层架构到使用体验很多人容易混淆这两者,觉得它们都是“买空间建站”,它们的底层逻辑完全不同,云服务器(ECS)就像是你租了一整栋别墅,水电网络独立,你想……

    2026-06-29
    0
  • 赣州智慧旅游招聘是真的吗?赣州旅游人才招聘信息

    中级岗位(3-5年经验)月薪范围通常在6000-10000元,这类岗位需要独立负责项目模块,如独立运营一个抖音账号,或维护一个景区小程序的功能迭代,具备成功案例的候选人议价能力较强,高级岗位(5年以上经验)月薪范围通常在10000-20000元,部分核心管理岗可达更高,这类人才需要具备战略规划能力,如制定整个景……

    2026-06-29
    0
  • 赣州智能物联网车位锁如何管理?智能车位锁管理系统多少钱

    赣州智能物联网车位锁管理的核心在于通过云端平台实现远程控锁、状态实时监控及自动计费,彻底解决传统车位“被占难管”与“找位难”的痛点,在赣州这样的城市,随着机动车保有量的持续增长,老旧小区、商业综合体以及私人固定车位的资源矛盾日益凸显,传统的机械地锁或简易遥控锁,不仅操作繁琐,更无法实现数据化管理,引入智能物联网……

    2026-06-29
    0
  • 赣州智能消防栓好用吗,智能消防栓多少钱一个

    赣州智能消防栓通过物联网技术实现实时监测与远程报警,能显著降低火灾响应时间并提升城市消防安全管理水平,是目前智慧城市建设中不可或缺的基础设施,赣州智能消防栓的核心价值与应用场景传统消防栓往往存在“看不见、摸不着、用不了”的痛点,在赣州这样地形复杂、老城区与新城区并存的区域,传统设施的管理难度极大,智能消防栓的出……

    2026-06-29
    0
  • 云服务器和物理机到底有啥区别?

    云服务器本质上是虚拟化资源池中的弹性实例,而传统物理服务器是独占的硬件实体,前者胜在弹性与运维便捷,后者强在物理隔离与性能稳定,具体选择取决于业务对成本、扩展性及安全合规的权衡,很多人初次接触服务器时,容易把“云服务器”和“传统物理服务器”混为一谈,觉得它们都是用来跑网站或存数据的盒子,这两者的底层逻辑完全不同……

    2026-06-29
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注