mysql 多个字段有重复数据, 我需要进行去重处理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 多个字段有重复数据, 我需要进行去重处理相关的知识,希望对你有一定的参考价值。
例: 表: tb 里面 有3个字段 id name type
值: 小明 34
小明 46
小明 34
小明 46
小张 46
小张 24
上面可以看出 小张 属于 46, 和24 2个类别里面 而小明, 有重复 46 和 34
sql 应该如何写 查询语句???
过滤重复数据
有些 mysql 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。
你也可以使用 GROUP BY 来读取数据表中不重复的数据:
参考技术A SELECT name,type FROM tb GROUP BY name,type HAVING COUNT(*)>1; 参考技术B 分组显示:SELECT * FROM tb GROUP BY name资料来源:树懒学堂
去除重复数据可以使用DISTINCT
SELECT DISTINCT * FROM tb GROUP BY name追问
您 好像没有看明白我的问题, 只有在 name 和 type 都重复的情况下 才是重复数据
单个重复 不是重复数据
第二个查询语句没有解决你的问题吗?去除重复的行。
参考技术C select * from tb group by name,type;追问我已经找到答案了。 。 其实感觉也很简单。。 select DISTINCT name,type from tb 这样可以查出去重后的 数据 把 去重的 添加到新的表里面 (表结构相同) 就ok了 然后 替换表明
mysql对表中数据根据某一字段去重
要删除重复的记录,就要先查出重复的记录,这个很容易做到
select * from 表名 group by 根据哪一个字段(简称字段) having count(字段) > 1
注意:这是查出所有重复记录的第一条记录,需要保留,因此需要添加查询条件,查出所有的重复记录
select id,expect from cqssc where expect in (select expect from cqssc group by expect having count(expect)>1) and id not in(select min(id) from cqssc group by expect having count(expect)>1)
然后
delete from cqssc where id in (select id from (select id from cqssc where expect in (select expect from cqssc group by expect having count(expect)>1) and id not in (select min(id) from cqssc group by expect having count(expect)>1)) as tmpresult)
删除成功,最后再查询一下看是否还有重复记录
以上是关于mysql 多个字段有重复数据, 我需要进行去重处理的主要内容,如果未能解决你的问题,请参考以下文章