MySQL 删除重复项(保留ID最小的项)

有些MySQL 数据表中可能存在重复的记录,形式如下表

id value
1 A
2 B
3 B

如果想删除多余的value,又想只删掉ID较大的项,可以用如下办法:

DELETE FROM your_table
	WHERE id IN
		( SELECT O.your_table FROM
			( SELECT id FROM your_table
					WHERE 
                        -- 第一个条件是 value 计数大于1
                        value IN
						(	SELECT value FROM your_table
								GROUP BY value
								HAVING COUNT(value) > 1
						)
                        -- 第二个条件是 id 不是最小的那个
						AND id NOT IN
						(	SELECT MIN(id) FROM your_table
								GROUP BY value
						)
			) as O
		);

另外多说一句,删掉的id即使自增也不会补上,而是会接着被删掉的id继续,如果想修改,需要使用ALTER语句

猜你喜欢

转载自blog.csdn.net/SeasonSoy/article/details/81354479