数据库sql去重

数据库sql去重,第1张

1 去重

1.1 查询

1.1.1 存在部分字段相同的纪录,即有唯一键主键ID

最常见情况如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组

select * from table where id in (select max(id) from table group by [去除重复的字段名列表,....])

1.1.2 存在两条完全相同的记录用关键字distinct就可以去掉

select distinct id(某一列) from table(表名) where (条件)

1.1.3 查找表中不含重复的数据,根据单个字段(id)来判断

select * from table where id in (select id from table group by id having count (id) >1)

1.1.4 查找表中重复的数据,根据单个字段(id)来判断

select * from table where id not in (select id from table group by id having count (id) >1)

1.1.5 查询全部的重复信息

select * from people where id not in (select min(id) from people group by name,sex HAVING COUNT(*) <2)

1.1.6 查询全部的重复信息

select * from table where id not in (select MIN(id) from table group by name,sex)

1.1.7 删除多余重复的信息,只保留最小ID

delete from table where id not in(select MIN(id) from table group by name,sex)

select * from table1

Union

select * from table1

注:Union ALL不会过滤重复的

而Union相当于连表后在用distinct 会很慢

两种方式:

第一种,在代码中实现。插入数据前先通过查询判断数据库中是否已存在同样的数据,不存在再插入。

第二种,在数据库中建立唯一索引。这样插入数据时,如果数据重复,插入 *** 作会抛出异常,插入失败。达到去重的目的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6731520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存