删除重复保留一条

表里已经堆了重复数据,要清掉只留一条。常见做法是先把'每组留一条'的结果搬进临时表、清空原表再导回;或用子查询删掉非最小 id 的副本。

删除重复保留一条要点

删除重复保留一条示例

						-- 方法一:搬到临时表再换回
						CREATE TABLE member_tmp
						SELECT username, email, MAX(phone) AS phone
						FROM member GROUP BY username, email;
						DROP TABLE member;
						ALTER TABLE member_tmp RENAME TO member;

						-- 方法二:删掉每组里非最小 id 的重复行
						DELETE FROM member
						WHERE id NOT IN (
						    SELECT min_id FROM (
						        SELECT MIN(id) AS min_id
						        FROM member
						        GROUP BY username, email
						    ) AS t
						);
避坑提醒:用 NOT IN 子查询删副本最稳:先按重复键取每组最小 id,不在集合里的就是多余副本,整组只留最小那个。
删除重复保留一条 · 重复数据处理 知识卡片
卡片 05 / 06 · 重复数据处理(1080×1440 速查卡片)

重复数据处理知识点