为了账号安全,请及时绑定邮箱和手机立即绑定

删除所有重复行,只删除MySQL中的一个行?

删除所有重复行,只删除MySQL中的一个行?

回首忆惘然 2019-06-03 10:00:23
删除所有重复行,只删除MySQL中的一个行?如何删除MySQL表中的所有重复数据?例如,使用以下数据:SELECT * FROM names;+----+--------+| id | name   |+----+--------+| 1  | google || 2  | yahoo  || 3  | msn    || 4  | google || 5  | google || 6  | yahoo  |+----+--------+我会用SELECT DISTINCT name FROM names;如果是SELECT查询。我该怎么做DELETE只删除副本而只保留一条记录?
查看完整描述

2 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

如果您想保持行的最低id价值:

DELETE FROM NAMES WHERE id NOT IN (SELECT * 
                    FROM (SELECT MIN(n.id)
                            FROM NAMES n                        GROUP BY n.name) x)

如果你想id最高值:

DELETE FROM NAMES WHERE id NOT IN (SELECT * 
                    FROM (SELECT MAX(n.id)
                            FROM NAMES n                        GROUP BY n.name) x)

子查询中的子查询对于MySQL是必要的,否则您将得到一个1093错误。


查看完整回答
反对 回复 2019-06-03
  • 2 回答
  • 0 关注
  • 614 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信