有两个意义上的重复记录,一是完全重复的记录,也即所有字段均都重复,二是部分字段重复的记录。对于第一种重复,比较容易解决,只需在查询语句中使用distinct关键字去重,几乎所有数据库系统都支持distinct操作。发生这种重复的原因主要是表设计不周,通过给表增加主键或唯一索引列即可避免。
select distinct * from t;
对于第二类重复问题,通常要求查询出重复记录中的任一条记录。假设表t有id,name,address三个字段,id是主键,有重复的字段为name,address,要求得到这两个字段唯一的结果集。
-- Oracle、MySQL,使用相关子查询
select * from t t1
where t1.id =
(select min(t2.id)
from t t2
where t1.name = t2.name and t1.address = t2.address);
-- Hive只支持在FROM子句中使用子查询,子查询必须有名字,并且列必须唯一
select t1.*
from t t1,
(select name, address, min(id) id from t group by name, address) t2
where t1.id = t2.id;
-- 还可以使用Hive的row_number()分析函数
select t.id, t.name, t.address
from (select id, name, address,
row_number() over (distribute by name, address sort by id) as rn
from t) t
where t.rn=1;
分享到:
相关推荐
该算法是基于重复数据的一个简单的算法,适合各种语言,比网上的其他的算法简洁,更容易理解,算法,适合各种编程语言,如,数组,集合
ORACLE删除重复数据
易语言学习进阶去除重复数据源码。@资源源码站。
oracle中如何删除重复数据,方便大家下载
OracleSQL实例-删除重复数据行留最新日期实例.pdf 学习资料 复习资料 教学资源
使用ORACLE去除重复数据,这在日常数据处理中非常有用。
oracle数据库各种删除重复数据方法
SQL Server删除重复数据的几个方法SQL Server删除重复数据的几个方法
删除表中重复数据 删除表中重复数据 删除表中重复数据
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
plsql删除重复记录
易语言学习进阶去除重复数据源码,学习进阶去除重复数据
删除表中重复数据sql语句 绝对经典和详细 太好了
重复数据删除技术中的关键技术MD5算法及改进
数据结构 合并链表 并去除重复数据. 将LLa,LLb链表合并后存入LLc升序,输出显示,最后再去除链表中重复数据去除重复数据
文章目录stata清洗数据——去除重复数据方法stata中的_N和_n(是去重操作的基础)去重操作对单一列:id对两列(及以上):date 和 证券代码 stata清洗数据——去除重复数据方法 stata中的_N和_n(是去重操作的基础)...
ORACLE删除重复数据的一种高效的方法.
用于两个excel文档中,删除重复的部分
oracle 数据库中重复的记录行的清理删除方法,总结了几种比较可行的方法路径并分析了方法的优劣
我们可能会出现这种情况,某个表原来设计不周全,导致表...一、对于部分字段重复数据的删除 先来谈谈如何查询重复的数据吧。 下面语句能够查询出那些数据是重复的: select 字段1,字段2,count(*) from 表名 group