MySQL数据去重(所有字段)

[面试记录]

在一个表中有多条重复数据,并且没有主键,也就是所有字段都一样的重复

如图  表名 name_age

查询唯一数据的话很简单  我们用distinct就可以实现

select DISTINCT `name`, age from name_age

但是现在问题是要删除表中的多余数据,而且重复数据的所有字段都是一样的这就比较复杂了。我采用的方式是借助一个临时表。

将查询的不重复的结果创建为一个临时表,然后清空原来的数据表,然后将临时表中的所有数据插入回原来的数据表中,最后删除临时表。

create table temp_name_age (select DISTINCT `name`, age from name_age);
truncate name_age;
insert into name_age (`name`, age) SELECT * from temp_name_age;
DROP TABLE temp_name_age ;

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据多个字段进行数据去重,可以使用GROUP BY语句结合HAVING COUNT(*) > 1来实现。首先,根据需要去重字段在SELECT语句中列出,然后使用GROUP BY将这些字段分组。接着使用HAVING COUNT(*) > 1来筛选出重复的记录。例如,如果有一个名为table1的数据表,其中包含四个字段:field1、field2、field3和field4,想要根据这四个字段进行去重,可以使用以下SQL语句: SELECT field1, field2, field3, field4 FROM table1 GROUP BY field1, field2, field3, field4 HAVING COUNT(*) > 1; 上述SQL语句会返回所有在field1、field2、field3和field4上存在重复的记录。 如果只想保留其中一条重复记录,可以使用以下方式编写SQL语句: SELECT MIN(id), field1, field2, field3, field4 FROM table1 GROUP BY field1, field2, field3, field4 HAVING COUNT(*) > 1; 需要注意的是,上述SQL语句中的table1、field1、field2、field3、field4和id需要根据实际情况进行替换。另外,id是表中的一个唯一标识字段,通过使用MIN函数可以选择重复记录中最小的id值作为结果返回。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【MySQL】根据多个字段查询数据进行去重的sql编写](https://blog.csdn.net/qq_42445425/article/details/131961046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值