zoukankan      html  css  js  c++  java
  • sql脚本-维护一张表中的数据,按照保单号,将最近生成的数据删除掉,只保留之前生成的数据

    最近在项目中遇到这样一个问题

    运行sql语句:select a.contno from LIS_BUSI_TRANSACTIONS a where 1=1 and a.ruleid='16' group by a.contno having count(a.contno)>1

    这条sql语句的意思是能够查询出来有多少张保单是存在重复数据。

    现在的需求是将有重复的数据按照保单号进行分组,只要最先产生的那一条数据。

    现在要做的事,我要写一个sql脚本对这张表中的数据进行维护:

    思路:想:一条sql是肯定是办不成事的,需要借助于中间表,基本做法是:先将自己要保留的数据保存到中间表中,然后后将将有问题的数据删除掉,将中间表的数据保存到原表中,最后,再将借助的中间表删除掉就可以了,(其实中间表不删掉也是可以的,留一个备份也是不错的选择的,毕竟在实际项目中数据是不能随随便便的删除)。

    sql脚本如下:

    create table temp_lis_busi_transactions_a as
    ( SELECT min(sid) as sid,contno FROM lis_busi_transactions where invoiceflag = '00' and successflag = '1' and sum_total > 0 and contno in (select distinct contno from lis_busi_transactions where 1 = 1 and invoiceflag = '00' and successflag = '1' and sum_total > 0 group by contno having count(contno) > 1) /* and rownum=1*/ group by contno );

    create table temp_lis_busi_transactions_b as select * from lis_busi_transactions where 1=2;

    insert into temp_lis_busi_transactions_b
    select * from lis_busi_transactions where sid in(
    select sid from temp_lis_busi_transactions_a);

    delete from lis_busi_transactions where invoiceflag='00' and successflag='1' and sum_total>0;
    insert into lis_busi_transactions select * from temp_lis_busi_transactions_b;
    drop table temp_lis_busi_transactions_a;
    drop table temp_lis_busi_transactions_b;

  • 相关阅读:
    Python web 框架:web.py 【函数】
    python >>> sql >>> conn >>> pyodbc
    python中使用mRMR
    2019 湖南省赛 I题 2019 (树形DP???)
    CF-1092 F. Tree with Maximum Cost(换根DP)
    CF-1187 E. Tree Painting (换根DP)
    CF1200D White Lines
    [网络流24题] 骑士共存问题 (二分图匹配 最大流)
    [网络流24题] 分配问题 (二分图的最佳匹配)
    P3831 [SHOI2012]回家的路 (分层图最短路)
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12284136.html
Copyright © 2011-2022 走看看