Mysql之删除重复记录

本文探讨了在MySQL中如何删除重复记录。针对两种情况提供了解决方案:一是当表中有id字段,但除了id外其他字段都重复时,可以使用子查询删除不在最小id集合中的记录;二是当表中无id字段,所有字段都重复时,由于MySQL无内置rowid属性,建议先添加临时id再进行处理。这两种方法能有效帮助开发者清理数据库中的重复数据。
摘要由CSDN通过智能技术生成

在编写功能后进行测试时,经常会向数据库插入多条重复记录,自己一条条手动删除会很麻烦,那么如何删除重复记录呢?
以下从两个方面展开:

  • id不同,其他字段全部重复
  • 无id字段,所有字段全部重复

id不同,其他字段全部重复

表的数据如下图:
id不同,其他字段均相同

delete from test 
where id not in (
	select tmp.mins from 
	(
		select 
			min(id) as mins 
		from test
		group by name, address
	)tmp 
)

通过对重复字段进行分组,取min(id),将test表中id不在这个id集合中的其他记录全部删除,达到去重效果(取max(id)亦可)

无id字段,所有字段全部重复

表的数据如下图:
字段全部重复

mysql每行记录没有隐藏的rowid属性,所以删除起来有难度啊,只能自己手动先将行号加上喽

SELECT @i:=@i+1 AS id, name, tile FROM test,(SELECT @i:=0) rowNo;

后续处理方式同上一节

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值