一个sql解决表中重复数据问题

Posted ZK_小姜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个sql解决表中重复数据问题相关的知识,希望对你有一定的参考价值。

场景:某个线上数据库表中,存在重复数据,我们要保证数据的准确性,一方面要保证数据不遗漏,另一方面要保证数据不重复,因此可能会去给这张表添加联合唯一索引,但是发现表中已经有很多重复数据,因此需要根据多个条件去删除重复数据,相同数据只留一份。

解决办法
使用sql的delete删除重复数据

DELETE t1 FROM t1,t2 WHERE t1.id = t2.id 或者DELETE FROM t1 USING t1,t2 WHERE t1.id = t2.id
具体使用可以是多张表,也可以是一张表,例如我的是一张表中的数据:

DELETE t1
FROM
	t1,
	(
		SELECT
			min(id) id,
			field1,
			field2,
			field3,
			field4
		FROM
			t1
		GROUP BY
			field1,
			field2,
			field3,
			field4
		HAVING
			count(*) > 1
	) t2
WHERE
	t1.field1 = t2.field1
AND t1.field2 = t.field2
AND t1.field3 = t.field3
AND t1.field4 = t.field4
AND t1.id > t2.id;

以上是关于一个sql解决表中重复数据问题的主要内容,如果未能解决你的问题,请参考以下文章

解决数据重复插入的sql与锁方案

SQL中表里面怎么删除重复数据

在SQL Server中快速删除重复记录

删除一张表中重复数据并保留一条ID最小的记录

用SQL语句操作数据

即使数据存在并出现在表中,jQuery 数据表也会显示“表中没有可用数据”[重复]