背景:一般在增量导入数据后,表中会出现冗余的数据,因此对于表的去重操作主要分为两种:去重查询以及删除重复数据

去重查询

distinct 关键字

select distinct <col1, col2, ...> from <table1>;

删除重复数据

删除重复数据主要分为两种:部分去重和完全去重

部分去重

部分去重分为两个步骤:

  1. 找出重复数据
select <col1, col2, ..., count()> from <table1> group by <col1, col2, ...> having count() > 1;
  1. 删除临时数据
delete from <table1 a> where <col1, col2> in(select col1, col2, ..., count() from <table1> group by col1, col2, ... having count() > 1);

** 进阶:如果当数据量非常大的时候,上面的删除执行效率会非常低,甚至有可能导致数据库卡死,因此可以用临时表来减轻数据库io的压力

--创建临时表保存重复数据
create table tmp as(select <col1, col2, ..., count()> from <table1> group by <col1, col2, ...> having count(*) > 1);
--删除原表中的重复数据
delete from <table1 a> where (col1, col2, ...) in(select col1, col2, ...from tmp);
--删除临时表
drop table tmp;

全部去重

当数据体量小的时候,可以考虑全部去重。

--创建临时表保存去重后的数据
create table tmp as(select distinct * from <table1>);
--清空原表数据
truncate table <table1>;
--将临时表的数据插入到原表中
insert into <table1>(select * from tmp);
--删除临时表
drop table tmp;

进阶用法

背景:如果数据10分钟导入一次,一小时导入一次,甚至一天导入一次,而且每次导入的数据都得进行去重,那么上述sql语句就会重复执行,我们如何实现其自动化?

答案是触发器,下面我写得一个应用触发器的事例,数据库用的是Kingbase(人大金仓V8),当然如果熟悉触发器的朋友也可以插入前检验,不过博主不擅长写referencing old old new new的前置触发,所以不在此举例。

CREATE OR REPLACE TRIGGER "clear_replica"
--触发条件:当插入数据至LsvoFplnCmdcCoreItems表时会触发动作,也可以加其他触发条件比如 UPDATE, DELETE, 需用OR连接
AFTER INSERT ON LsvoFplnCmdcCoreItems
FOR EACH ROW
AS
BEGIN --创建临时表保存重复数据CREATE TABLE tmp AS (SELECT CompanyCode, BusinessTypeCode, SubBusinessTypeCode, SupplierCode, CurrencyCode, IsInit,ExecAmt, PayDate, versionFROM LsvoFplnCmdcCoreItemsGROUP BY CompanyCode, BusinessTypeCode, SubBusinessTypeCode, SupplierCode, CurrencyCode, IsInit,ExecAmt, PayDate, version HAVING  count(*) > 1);--删除原表中的重复数据delete from LsvoFplnCmdcCoreItems where (CompanyCode, BusinessTypeCode, SubBusinessTypeCode, SupplierCode, CurrencyCode, IsInit,ExecAmt, PayDate, version) in(select CompanyCode, BusinessTypeCode, SubBusinessTypeCode, SupplierCode, CurrencyCode, IsInit,ExecAmt, PayDate, versionfrom tmp);--删除临时表drop table tmp;
END;

数据库sql去重操作 + 人大金仓案例相关推荐

  1. 人大金仓数据库sql语句_人大金仓数据库总结(SQL和JDBC)

    人大金仓作为一款国产数据库,使用的人数和相关资料都比较少. 最近使用人大金仓数据库,做了个简单的SQL和java jdbc的测试,希望能够供大家参考. 1.SQL语句 创建表: CREATE TABL ...

  2. 人大金仓数据库sql语句_人大金仓KingbaseES与主流数据库的兼容性

    KingbaseES针对Oracle.DB2.SQL Server等为代表的国外主流数据库产品,在服务器.接口.工具等各组件中全面改进了兼容性,屏蔽KingbaseES与这些产品之间的差异,从而减少现 ...

  3. jpa 人大金仓数据库方言_国产数据库的春天,人大金仓完成近亿元融资

    近日,人大金仓宣布完成近亿元融资.本次融资原股东太极股份等追加增资,同时引入战略投资方:电科研投.南威软件与东华软件,总融资额近亿元. 持续加码产品研发与市场拓展 本次融资将助力人大金仓持续加码产品研 ...

  4. 国产化人大金仓数据库转库工具:oracle12c数据库转kingbase8.6人大金仓数据库实例演示

    oracle12c数据库转人大金仓数据库实例演示 第一章:数据准备 ① 人大金仓建库建用户 ② 人大金仓授权表空间 ③ 人大金仓创建 schema 表 第二章:转库演示 ① 转库工具准备 ② 创建源库 ...

  5. 生态 | 数字化转型趋势下数据库发展探讨,人大金仓出席“第六届中国行业互联网大会”并发表主题讲话...

    10月23-25日,"第六届中国行业互联网大会暨CIO班15周年年会"在京成功举办,人大金仓受邀出席并发表主题讲话,就相关问题同与会嘉宾进行交流与分享. 本次大会以"新基 ...

  6. 猿创征文|【国产数据库实战】一文学会应用SqlSugar访问及操作人大金仓数据库

  7. kingbase数据库常用sql语句1(人大金仓数据库)

    常用查询语句: 说明:本sql语句适用于人大金仓数据库(kingbase) V8R6及其V8R3 --1. 统计某个模式下面每张表的数据量(行数)(这个表里的行数信息为大概值,并非和真实数据一模一样) ...

  8. 案例 | 标杆引领!人大金仓智绘数字金融

    随着中央数字经济政策推进金融业数字化建设,数字金融已初见成效,但尚存在信息安全缺乏保障.转型覆盖不全面等问题. 为实现金融行业全面数字化转型升级,作为数据库领域国家队,人大金仓紧跟国家战略,自主研发的 ...

  9. 【科技百咖】人大金仓:先定一个小目标,比如做中国No.1的数据库

    自身的强大内力才是制胜一切的关键 自中美贸易摩擦开始,国内就悄然兴起了一股「王牌热」,大家纷纷在各个角度寻找中国制胜美国的各种「王牌」.但在人大金仓总裁杜胜的心中,真正的王牌还是「内力」,自身的强大内 ...

最新文章

  1. js中Array数组中的常用方法汇总
  2. Outlook启动提示“找不到文件Outlook.pst文件”
  3. 两年实现Nature和Science双发,这位电子科大博士火了
  4. 编写高质量代码改善C#程序的157个建议——建议133:用camelCasing命名私有字段和局部变量...
  5. UEFI引导的系统下装双系统解决方案
  6. JSP+Javabean+Servlet实现用户注册
  7. 苹果CMS10|粉色视频站模版|YMYS007|魅力社
  8. 剑桥offer(41~50)
  9. 的使用两个数据集拼接_使用Scikit Learn的分类器探索Iris数据集
  10. 获取指定路径下所有PDF文件的总页数
  11. 计量风险系列—两大定价产品怎么计算风险损失
  12. 如何能把 fastdfs-client-java的jar包安装到本地的仓库中
  13. Jmeter中主要管理器功用
  14. React Native重构路线图发布!
  15. 使用ExtendSim进行物流、供应链和运输建模仿真
  16. 翻译: 欧洲伽利略卫星-全球导航卫星系统GNSS
  17. Eureka源码深度刨析-(5)EurekaServer处理服务发现
  18. AdMob(app内嵌广告)使用入门
  19. MyGUI_Orge官网教程_2.快速在工程中使用MyGUI
  20. 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

热门文章

  1. shell 脚本汇总 (持续更新中)
  2. oracle查询sga以及pga的大小,SGA/PGA的设置与调整
  3. T型整流电路matlab simulink仿真模型 三电平整流电路 电动汽车充电电路
  4. Jsp网上超市设计与实现(源代码+论文)
  5. 框架学习系列 之Struts2框架学习总结
  6. RPG多人回合制战斗框架设计《六:战斗AI》
  7. win10系统要求配置_2020年win10系统配置要求是什么
  8. 印度加密独角兽 Matic 是怎样炼成的? |链捕手
  9. 安全防御 --- 防火墙-- ASPF、NAT
  10. PHP支持的数据类型