zoukankan      html  css  js  c++  java
  • 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岁以下的青少年并没有参与本次评选。

  • 相关阅读:
    分布式事务的四种解决方案
    uber-go/guide 的中文翻译
    域名解析-CNAME
    Nginx节点存活状态检查
    Laravel核心解读--中间件(Middleware)
    Mac dyld: Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
    前缀树算法实现路由匹配原理解析
    原创-实用salt部署文档(持续更新)
    线上案例-调参-设置滑动窗口提高视频云播放性能
    NGINX日志割切
  • 原文地址:https://www.cnblogs.com/zifeiy/p/10337866.html
Copyright © 2011-2022 走看看