一個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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章