KingbaseES数据库merge语法

news2024/12/24 2:49:05

数据库版本:KingbaseES V008R006C008B0014


简介

    MERGE 语句是一种用于数据操作的 SQL 语句,它能够根据指定的条件将 INSERT、UPDATE 和 DELETE 操作结合到单个语句中。其主要作用是在目标表和源表之间进行数据比较和同步,根据条件的匹配情况来执行不同的操作。使用 MERGE 语法可合并 UPDATE 和 INSERT 语句,相比于单独执行 UPDATE + INSERT 语句效率更高。

        

目录

1. 语法说明

2. 基础用法

2.1. insert子句

2.2. update子句

2.3. delete子句


        

1. 语法说明

  • 花括号表示必选
  • 方括号表示可选
MERGE INTO
    [模式.] {目标表} [分区名] | 子查询
USING
    [模式.] {源表} [分区名] | 子查询
ON
    (条件表达式)
[WHEN MATCHED THEN]
    --合并update子句
[WHEN NOT MATCHED THEN]
    --合并insert子句
;

 合并子句的2种语法:

  • WHEN MATCHED THEN:如果条件匹配有相同的数据,那么执行update子句
  • WHEN NOT MATCHED THEN:如果条件匹配 "源表" > "目标表",那么执行insert子句n次

        

合并update子句如下:

WHEN MATCHED THEN
    UPDATE SET 列 = xxx...

合并insert子句如下:

WHEN NOT MATCHED THEN
    INSERT
        [列名1, 列名2...]
    VALUES
        (值1, 值2...)

合并delete子句如下:

DELETE where_clause

        

2. 基础用法

2.1. insert子句

insert 子句语法为:

WHEN NOT MATCHED THEN
    insert子句

规则:

表达式对多表的列数据进行去重后比较,当出现n次不同数据时,且 "目标表" 小于 "源表",执行 n 次 insert 子句,反之不执行。

        

【案例】用 id 作为 on(表达式),t1 表2行数据、t2 表4行数据,使用 id 列作为条件比较

merge语句如下(向目标表插入数据):

MERGE INTO t1 USING t2    -- 目标表为t1
ON (t1.id = t2.id)        -- 条件表达式
WHEN NOT MATCHED THEN     -- insert子句固定语法
    insert values(3, 30, '2000-01-03');  --执行insert操作

可以看到插入了2条数据。这是因为 t1.id 和 t2.id 有2行不相同(t2 的3/4),所以插入了2行。

        

使用刚才的语句继续执行1次

这次只插入了1行数据。这是因为上次插入的id中包含3,此时 t1.id 包含 1/2/3,t2.id 包含 1/2/3/4,它们之间只有1处不相同,所以只能插入1行。

        

通过如上案例,可以得出如下结论:merge语句是通过 on(条件表达式) 来判断是否执行 insert 子句向目标表插入数据(将表达式的列数据去重后做比较):

  • 当 "源表" 与 "目标表" 的条件列数据相同时,无法向目标表插入数据;
  • 当 "源表" 与 "目标表" 的条件列有n行不同时:
    • "源表" > "目标表" 时,可以向目标表插入n条数据。
    • "源表" < "目标表" 时,无法插入数据。

        

2.2. update子句

update 子句语法为:

WHEN MATCHED THEN
    update子句

规则

表达式对多表的列数据进行去重后比较,当出现n次相同数据时,执行n次update语句

        

【案例一】用 id 作为 on(表达式),两张表存在相同的数据

merge语句如下(更新目标表数据):

MERGE INTO t1 USING t2    -- 目标表为t1
ON (t1.id = t2.id)        -- 条件表达式
WHEN MATCHED THEN         -- update子句固定语法
    update set t1.amount = t1.amount + 1;  --执行update操作

两张表比较后存在相同的数据,执行 update 子句

        

【案例二】用 id 作为 on(表达式),两张表不存在相同的数据

执行与上述相同的 merge 语句

MERGE INTO t1 USING t2    -- 目标表为t1
ON (t1.id = t2.id)        -- 条件表达式
WHEN MATCHED THEN         -- update子句固定语法
    update set t1.amount = t1.amount + 1;  --执行update操作

未更新,因为相同的值为0,所以不执行。

        

通过上述案例,可以得出以下结论:

  • 当匹配列没有相同数据时,不执行 update 子句;
  • 当匹配列存在相同数据时,执行 update 子句。

注意:这里的 update 不能更新 on(条件表达式) 的列。比例 on(t1.id = t2.id),则不能更新 id 列。

        

2.3. delete子句

delete 子句与 update 条件和规则一样,存在相同的数据时执行,不存在则不执行

WHEN MATCHED THEN
    update子句

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IBERT眼图扫描(高速收发器八)

前文讲解了GTX的时钟及收发数据通道的组成&#xff0c;之后讲解了眼图、加重、均衡等原理及原因&#xff0c;本文通过xilinx提供的IBERT IP完成实际工程的眼图扫描&#xff0c;确定加重和幅值调节的参数。 1、回环模式 在此之前&#xff0c;需要了解一下GTX的回环模式。如果板…

批处理作业调度问题 (回溯法)

目录 一、问题解析 二、实例剖析 三、算法思路 四、代码实现 结果&#xff1a; 总结 前言 【问题】n 个作业{1, 2, …, n}要在两台机器上处理&#xff0c;每个作业必须先由机器 1 处理&#xff0c;再由机器 2 处理&#xff0c;机器 1 处理作业i所需时间为 ai&#xff0c;…

【Unity实战篇 】| Unity实现 文本框可以自适应大小,到达最大宽度之后再缩小字体

前言 在文本框可以自适应大小拉伸的前提下,增加一个最大限制宽度,使其到达最大宽度后 再启用 Best Fit 实现自适应改变文字大小以适应文本框的大小。 【Unity实战篇 】 | Unity实现 Text文本框可以自适应大小,到达最大宽度之后再缩小字体 在Unity中经常会用到文本组件的自…

Jmeter插件下载(下载和使用教程)

插件管理器&#xff1a;plugins-manager下载安装和使用 下载&#xff1a; 官网地址&#xff1a;https://jmeter-plugins.org/install/Install/ 步骤1&#xff1a;将下载jmeter-plugins-manager-1.10.jar放到目录apache-jmeter-5.1.1\lib\ext&#xff0c;如下图 步骤2&#x…

《最新出炉》系列入门篇-Python+Playwright自动化测试-42-强大的可视化追踪利器Trace Viewer

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 在我们日常执行自动化测试工作的过程中&#xff0c;经常会遇到一些偶发性的bug&#xff0c;但是因为bug是偶发性的&#xff0c;我们不一定每次执行都能复现&#xff0c;所以我…

力扣刷题--747. 至少是其他数字两倍的最大数【简单】

题目描述 给你一个整数数组 nums &#xff0c;其中总是存在 唯一的 一个最大整数 。 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是&#xff0c;则返回 最大元素的下标 &#xff0c;否则返回 -1 。 示例 1&#xff1a; 输入&#xff1a;n…

Android端 可使用Yolov5训练 路标识别

相信大家对于路标识别&#xff0c;红绿灯识别&#xff0c;图形识别opencv中也是一件烦人的事情&#xff0c;其参数是及其受到现实环境因素的影响的&#xff0c;那么今天我就给大家推荐一种方式&#xff0c;缺点是周期长&#xff0c;但其优点是如果训练效果好久对于环境的各种变…

河南乙级道路与桥梁资质年审材料准备要点解析

河南乙级道路与桥梁资质年审材料准备要点解析如下&#xff1a;河南宽信权经理 一、企业基本情况材料 营业执照副本复印件&#xff1a;确保复印件清晰、完整&#xff0c;并加盖企业公章。 企业章程&#xff1a;提供最新的企业章程&#xff0c;并加盖企业公章。此材料需反映企业…

matepad11和matepad2023区别

​ 华为MatePad11和MatePad2023是华为公司推出的两款平板电脑&#xff0c;它们在处理器、价格和屏幕等方面存在差异。具体分析如下&#xff1a; 处理器 MatePad 11英寸2023款&#xff1a;搭载骁龙865处理器&#xff0c;最高主频为2.84GHz。 MatePad 2023&#xff1a;配备骁…

Android:使用Kotlin搭建MVVM+组件化App架构

一、简介Android MVVM架构模式 请点击查看Android&#xff1a;使用Kotlin搭建MVVM架构模式 二、简介组件化 以前一个项目所有业务代码都在App&#xff08;model&#xff09;里开发&#xff0c;App里按照功能模块分包&#xff0c;例如&#xff1a;首页&#xff08;home&#xff…

58同城前端社招一面挂了,面试总结:coding能力有待提高

总结面试不足&#xff1a;coding能力有待提高&#xff0c;项目对于大厂面试来说不够有亮点&#xff0c;难度不够&#xff0c;对于技术细节不够深入。下周继续加油&#xff0c;噢力给给&#xff01;&#xff01;&#xff01;&#x1f62d;&#x1f62d;&#x1f62d; 面试题 1、…

[Algorihm][简单多状态DP问题][买卖股票的最佳时机含冷冻期][买卖股票的最佳时机含手续费]详细讲解

目录 1.买卖股票的最佳时机含冷冻期1.题目链接买卖股票的最佳时机含冷冻期2.算法原理详解3.代码实现 2.买卖股票的最佳时机含手续费1.题目链接2.算法原理详解3.代码实现 1.买卖股票的最佳时机含冷冻期 1.题目链接 买卖股票的最佳时机含冷冻期 2.算法原理详解 思路&#xff…

Realcome:AI赋能,引领虚拟博主创业新纪元

在数字化浪潮汹涌的时代&#xff0c;一个崭新的科技品牌正在崭露头角——Realcome&#xff0c;一家以AI智能交互服务为核心&#xff0c;为企业提供全方位数字化营销解决方案的科技服务公司。自2021年成立以来&#xff0c;Realcome凭借其前沿的技术和创新的理念&#xff0c;迅速…

漂流瓶挂机项目,聊天脚本赚钱新玩法,号称单机30-50+ (教程+软件)

一、项目简介&#xff1a; 漂流瓶挂机项目主要是通过使用探遇漂流瓶、音麦漂流瓶等聊天软件&#xff0c;为用户提供一个聊天赚钱的平台。男性用户需要充值后才能发送消息&#xff0c;而女性用户则可以通过接收消息赚取分红。男性用户发送给女性用户的消息费用大约在.1-.2元之间…

【openlayers系统学习】4.2Mapbox 样式渲染图层

二、Mapbox 样式渲染图层 显然我们目前的地图需要一些样式。 VectorTile​ 图层的样式与 Vector​ 图层的样式工作方式完全相同。那里描述的样式在这里也适用。 对于这样的地图&#xff0c;创建数据驱动的样式&#xff08;对矢量图层操作&#xff09;非常简单。但矢量切片也用…

自动驾驶技术现状与需求分析

随着科技的不断进步和智能化浪潮的席卷&#xff0c;自动驾驶技术已成为当今交通领域的热点话题。本文旨在深入探讨自动驾驶技术的当前发展状况&#xff0c;并对其未来的市场需求进行细致分析。首先&#xff0c;我们将回顾自动驾驶技术的起源、发展历程以及当前的技术水平&#…

自动驾驶---Perception之IPM图和BEV图

1 前言 IPM&#xff08;Inverse Perspective Mapping&#xff0c;逆透视变换&#xff09;图的历史可以追溯到计算机视觉和图像处理领域的发展。逆透视变换是一种用于消除图像中透视效应的技术&#xff0c;使得原本由于透视产生的形变得以纠正&#xff0c;进而更准确地描述和理解…

早餐店燃气安全岂能马虎?探头选择与年检必须到位

在现代都市生活中&#xff0c;早餐店作为人们日常生活中的重要一环&#xff0c;其安全性问题日益受到人们的关注。其中&#xff0c;燃气泄漏引发的火灾和爆炸事故尤为令人担忧。 因此&#xff0c;点式可燃气体报警器在早餐店中的应用显得尤为重要。 在这篇文章中&#xff0c;…

PyTorch深度学习实战(44)——基于 DETR 的目标检测模型

PyTorch深度学习实战&#xff08;44&#xff09;——基于 DETR 的目标检测模型 0. 前言1. Transformer1.1 Transformer 基础1.2 Transformer 架构 2. DETR2.1 DETR 架构2.2 实现 DETR 模型 3. 基于 DETR 实现目标检测3.1 数据加载与模型构建3.2 模型训练与测试 小结系列链接 0.…

防止CSRF攻击

防止CSRF攻击 跨站点请求伪造&#xff08;Cross-Site Request Forgery&#xff0c;简称CSRF&#xff09;是一种常见的网络攻击类型。当用户在受信任的站点上通过身份验证后&#xff0c;访问攻击者精心准备的恶意网站、电子邮件、博客、即时消息或程序时&#xff0c;可能会导致…