首先我们新建一张名为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语句实现西虹市首富的新增及更新操作的更多相关文章

  1. 《oracle每天一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战

    转载自窃破天道 动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也 ...

  2. 使用Merge Into 语句实现 Insert/Update

    网址: http://www.eygle.com/digest/2009/01/merge_into_insertupdate.html 动机: 想在Oracle中用一条SQL语句直接进行Insert ...

  3. Merge Into 语句代替Insert/Update在Oracle中的应用实战

    动机: 想在Oracle中用一条SQL语句直接进行Insert/Update的操作. 说明: 在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录 ...

  4. mybatis 使用oracle merge into 语句踩坑实录

    由于需求涉及oracle的clob类型字段,在mybatis的mapper xml文件中编写merge into语句时总是失败. 附上错误代码 <insert id="mergeInt ...

  5. 2.5 Oracle之存储过程和MERGE INTO语句

    一.MERGE INTO语句 1.merge into语句的功能:我们操作数据库的时候,有时候会遇到insert或者Update这种需求.我们操纵代码时至少需要写一个插入语句和更新语句并且还得单独写方 ...

  6. 纪念我人生中第一个merge into语句

    做按组织关系汇总功能时,当数据量特别大,或者汇总组织特别多时,运行效率特别低,于是使用了merge into语句. 代码如下: public void updateInsertData(DataSet ...

  7. Merge into语句用法及其效率问题

    Merge into语句用法及其效率问题 /*Merge into 详细介绍MERGE语句用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询, ...

  8. Oracle 使用MERGE INTO 语句更新数据

    /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询,连接条件匹配 ...

  9. 通过DbVisualizer 工具运行DB2存储过程实现INSERT语句主键自增造数

    1.需求简介 最近开发人员需要进行一批数据进行生产上SQL语句耗时过长问题的验证与优化.所以在性能测试库中批量建造数据,由于交易本身业务逻辑过于复杂以及需要各种授权,最后决定采用插表的方式完成. 2. ...

随机推荐

  1. 生活 RH阴性血 AB型

    这个血型很稀有,外国多些,中国很少. ABO型:A.B.AB.O RH血型系统:阴性,阳性 RH阴性血,被称为熊猫血,估计是稀有吧,阴性血缺抗D,我老婆的血型抗原好像是:ccee,大部分汉族人都有抗D ...

  2. PHP-FPM参数详情

    pid = run/php-fpm.pid #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启 error_log = log/php-fpm.log #错误日志,默认在 ...

  3. linux 环境变量的设置

    方法一: 在/etc/profile文件中添加变量[对所有用户生效(永久的)] 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”. 要让刚才的 ...

  4. codevs:1313 质因数分解:已知正整数 n是两个不同的质数的乘积,试求出较大的那个质数 。

    #include<iostream>#include<cstdio>#include<cmath>using namespace std;int a[2];int ...

  5. 43、内置函数及每日uv、销售额统计案例

    一.spark1.5内置函数 在Spark 1.5.x版本,增加了一系列内置函数到DataFrame API中,并且实现了code-generation的优化.与普通的函数不同,DataFrame的函 ...

  6. Angular惰性加载的特性模块

    一:Angular-CLI建立应用 cmd命令:ng new lazy-app --routing    (创建一个名叫 lazy-app 的应用,而 --routing 标识生成了一个名叫 app- ...

  7. Angular发送广播和接收广播

    home.module.ts import {BroadcastService} from "../broadcast.service"; @NgModule({ imports: ...

  8. CODE FESTIVAL 2016 Grand Final 题解

    传送门 越学觉得自己越蠢--这场除了\(A\)之外一道都不会-- \(A\) 贪心从左往右扫,能匹配就匹配就好了 //quming #include<bits/stdc++.h> #def ...

  9. UOJ46 【清华集训2014】玄学 【时间线段树】

    题目链接:UOJ 这题的时间线段树非常的妙. 对时间建立线段树,修改的时候在后面加,每当填满一个节点之后就合并进它的父亲. 对于一个节点维护序列,发现这是一个分段函数,合并就是归并排序.于是就形成了差 ...

  10. Assignment3:白盒测试以及测试框架简介

    一. 白盒测试简介       白盒测试又称结构测试.透明盒测试.逻辑驱动测试或基于代码的测试.白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及 ...