DB2使用MERGE INTO语句实现西虹市首富的新增及更新操作
首先我们新建一张名为XIHONGSHISHOUFU的表,这张表是评委会初步评选出的西虹市首富的候选人员,下面的SQL语句包含建表和插入数据的部分:
CREATE TABLE XIHONGSHISHOUFU (
REGION_ID INTEGER,
NAME VARCHAR(20),
MONEY DECIMAL(20,2),
AGE INTEGER
);
INSERT INTO XIHONGSHISHOUFU VALUES
(101,'小明',100.00,30),
(102,'小王',200.00,35),
(104,'小李',300.00,25);
这张表的数据展示如下:
| REGION_ID | NAME | MONEY | AGE |
|---|---|---|---|
| 101 | 小明 | 100.00 | 30 |
| 102 | 小王 | 200.00 | 35 |
| 104 | 小李 | 300.00 | 25 |
我们这里简单地解释一下上面的数据,XIHONGSHISHOUFU这张表包含了如下信息:
- REGION_ID:区号;
- NAME:这个区目前评审出的最有钱人的姓名;
- MONEY:这个区最有钱的人的资产估值;
- AGE:这个人的年龄。
然而呢,接下来评委会收到了一张新的名单,是之前以往的一些有钱人的清单。
所以评委会现在需要做的是更新一下数据,从而得到新的西渱市首富清单。
新的有钱人清单的表结构和上面的表是一样的,下面是这张表SHOUFU_BACKUP的建表和插入数据的SQL语句:
CREATE TABLE SHOUFU_BACKUP (
REGION_ID INTEGER,
NAME VARCHAR(20),
MONEY DECIMAL(20,2),
AGE INTEGER
);
INSERT INTO SHOUFU_BACKUP VALUES
(101,'丁丁',50.00,20),
(102,'东东',500.00,30),
(103,'可可',700.00,25),
(104,'乐乐',800.00,15);
这张表的数据展示如下:
| REGION_ID | NAME | MONEY | AGE |
|---|---|---|---|
| 101 | 丁丁 | 50.00 | 20 |
| 102 | 东东 | 500.00 | 30 |
| 103 | 可可 | 700.00 | 25 |
| 104 | 乐乐 | 800.00 | 15 |
接下来我需要将SHOUFU_BACK表中的数据更新到XIHONGSHISHOUFU表中,使得,新的数据能够体现出每个区对应的首富,并且18岁以下的人不能参与这次评选(18岁以下的人应该在学校里面好好读书),所以接下来我们可以使用MERGE INTO语句来实现这个“能改就改,不能改就插”的效果,SQL语句如下:
MERGE INTO XIHONGSHISHOUFU A
USING SHOUFU_BACKUP B
ON A.REGION_ID=B.REGION_ID
WHEN MATCHED AND b.AGE>=18 THEN UPDATE SET
(REGION_ID,NAME,MONEY,AGE)=(B.REGION_ID,B.NAME,B.MONEY,B.AGE)
WHEN NOT MATCHED AND B.AGE>=18
THEN INSERT VALUES (B.REGION_ID,B.NAME,B.MONEY,B.AGE)
此时再去查看一下XIHONGSHISHOUFU的清单,得到结果如下:
| REGION_ID | NAME | MONEY | AGE |
|---|---|---|---|
| 101 | 丁丁 | 50.00 | 20 |
| 102 | 东东 | 500.00 | 30 |
| 104 | 小李 | 300.00 | 25 |
| 103 | 可可 | 700.00 | 25 |
可以看到,首富的信息,能更新的都已经更新了,能新增的都已经新增了,并且18岁以下的青少年并没有参与本次评选。
DB2使用MERGE INTO语句实现西虹市首富的新增及更新操作的更多相关文章
- 《oracle每天一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战
转载自窃破天道 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也 ...
- 使用Merge Into 语句实现 Insert/Update
网址: http://www.eygle.com/digest/2009/01/merge_into_insertupdate.html 动机: 想在Oracle中用一条SQL语句直接进行Insert ...
- Merge Into 语句代替Insert/Update在Oracle中的应用实战
动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录 ...
- mybatis 使用oracle merge into 语句踩坑实录
由于需求涉及oracle的clob类型字段,在mybatis的mapper xml文件中编写merge into语句时总是失败. 附上错误代码 <insert id="mergeInt ...
- 2.5 Oracle之存储过程和MERGE INTO语句
一.MERGE INTO语句 1.merge into语句的功能:我们操作数据库的时候,有时候会遇到insert或者Update这种需求.我们操纵代码时至少需要写一个插入语句和更新语句并且还得单独写方 ...
- 纪念我人生中第一个merge into语句
做按组织关系汇总功能时,当数据量特别大,或者汇总组织特别多时,运行效率特别低,于是使用了merge into语句. 代码如下: public void updateInsertData(DataSet ...
- Merge into语句用法及其效率问题
Merge into语句用法及其效率问题 /*Merge into 详细介绍MERGE语句用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询, ...
- Oracle 使用MERGE INTO 语句更新数据
/*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配 ...
- 通过DbVisualizer 工具运行DB2存储过程实现INSERT语句主键自增造数
1.需求简介 最近开发人员需要进行一批数据进行生产上SQL语句耗时过长问题的验证与优化.所以在性能测试库中批量建造数据,由于交易本身业务逻辑过于复杂以及需要各种授权,最后决定采用插表的方式完成. 2. ...
随机推荐
- LightOJ - 1246 - Colorful Board(DP)
链接: https://vjudge.net/problem/LightOJ-1246 题意: You are given a rectangular board. You are asked to ...
- spark如何划分DAG视图
spark根据宽依赖进行DAG视图的划分. 1.窄依赖:每个父RDD的partition 最多被一个子RDD的 partition使用. 窄依赖分为两类:第一类是一对一的依赖关系,在Spark中用On ...
- 关于bootstrap的双层遮罩问题
在使用bootstrap的双层遮罩时 遇到这么2个问题 第一个是当关闭遮罩里面层遮罩时滚动条会向左溢出 第二个也是当关闭遮罩里面层遮罩时 在第一层遮罩的内容相当于固定住了 拖动滚动条也只能显示他固定住 ...
- RookeyFrame 还原 软删除的数据 怎么硬删除 或者 怎么还原
列表搜索栏上有个删除图标,可以进入回收站 如图:
- 推荐VSCode多语言开发,支持一键JAVA
本文梯子 缘起 一.VSCode 开发 NetCore 0.安装 VSCode IDE 1.安装依赖扩展 2.新建一个项目 3.打开已有工程 4.总结 二.VSCode 开发 Vue 1.安装插件 2 ...
- 《挑战30天C++入门极限》C++运算符重载赋值运算符
C++运算符重载赋值运算符 自定义类的赋值运算符重载函数的作用与内置赋值运算符的作用类似,但是要要注意的是,它与拷贝构造函数与析构函数一样,要注意深拷贝浅拷贝的问题,在没有深拷贝浅拷贝的情况下 ...
- Android中进度条
<ProgressBar android:id="@+id/progress_bar" android:layout_width="match_parent&quo ...
- 分布式缓存Redis集群搭建
redis安装 1.下载tar包至/opt/redis 2.解压tar包 tar -xvf redis-4.0.14.tar.gz 3. cd redis-4.0.14 make一下. 单节点的red ...
- vue+elementui搭建后台管理界面(3侧边栏菜单)
上一节搭好了主框架,但是标签页和侧边栏只是分别展示了各自的菜单,如何将二者联动起来? 定义路由规则:当有 children 属性时,从 children 里取出 path 填充到侧边栏,如: { pa ...
- Mono Features of cheat engine
If you attach to a process/game that uses mono, you should see a new "Mono" menu item on t ...