首先我们新建一张名为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. if语句:求x的绝对值

    #include<stdio.h>void main(){ int x,y; scanf("%d", &x); printf("x=%d\n" ...

  2. MySQL 索引原理以及慢查询优化

    本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree ...

  3. Go工程项目方面注意

    1.同一个文件夹下的包名必须相同 2.文件夹下go文件使用的包名不是必须同文件夹名,但建议包名同文件夹名 3.不用目录包名不同 4.调用不同包里面的函数格式:包名.函数名(...) 5.包导出给外部使 ...

  4. Elasticsearch单机部署

    1.下载安装包 下载地址:https://www.elastic.co/downloads/elasticsearch 我这里下载的是 elasticsearch-6.4.0.tar.gz保存至/op ...

  5. JavaScript substr() 方法

    定义和用法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符. 语法 stringObject.substr(start,length) 参数 描述 start 必需.要 ...

  6. Django框架,python2和python3共存的情况下,创建Django项目

    一.python2和python3共存的情况下,直接使用 django-admin startproject Django-project 这个时候系统默认使用的是python2创建,可能由于pyth ...

  7. 根据udev的信息判断设备物理路径

    udev会生成by-path路径,根据这个就可以判断 dev目录下 [toybrick@localhost dev]$ find | grep platform-fe3c0000 ./disk/by- ...

  8. zabbix ALL = NOPASSWD: ALL

  9. 阿里物联网平台(一)Windows系统+VS2017 模拟设备端接入

    https://blog.csdn.net/panwen1111/article/details/88365636 一.阿里物联网平台 平台地址:https://account.aliyun.com ...

  10. vs2017发布后宕机,没有响应解决方法

    找到项目下:Properties\PublishProfiles 删除:FolderProfile.pubxml.user