MySQL删除重复记录只保留一条

本文介绍了一种使用SQL分步处理的方式,通过创建临时表来存储重复记录的ID,然后利用这些ID来删除主表中的重复数据。具体步骤包括创建临时表、插入数据以及最后的删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要分步处理,思路是先建立一张临时表,然后把要删除的记录id存入临时表中,然后对比临时表内的数据,删除主表里的数据。

sql如下:

1、创立临时表,并插入需要删除的表数据的id,只保留每批重复数据中id值最大的那条记录。

create table tmp select c.id from
(
	SELECT id FROM
		(
				SELECT a.* FROM `crawl_log` a,
				(SELECT question FROM `crawl_log` GROUP BY question HAVING count(question) >1) b
				where a.question = b.question
		)reData
		where reData.id not in
		(
			select max(id) from `crawl_log`  group by question having count(question)>1
		)
)c;


2、联合临时表,删除重复数据

DELETE from `crawl_log` where id in(SELECT id from tmp);

3、删除临时表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值