问题描述:
由于业务需求,需要删除一些重复数据。即删除openid对应的2条数据,最终只保留一行。
MySQL数据库,sql语句比较简单:删除数据前,备份数据是必须的!
先来错误的演示:
1.先把错误数据查询出来
SELECT
id,
openid,
COUNT(*) as recCount
FROM tb_wx_user_info_bak
GROUP BY openid
HAVING COUNT( * ) > 1
2.根据要删除的数据的ID,进行删除
DELETE FROM tb_wx_user_info_bak WHERE id IN
(
SELECT
id,
openid,
COUNT(*) AS recCount
FROM tb_wx_user_info_bak
GROUP BY openid
HAVING COUNT( * ) > 1
)
一看就会,一做就废。
执行了上面的sql,果然,把sqlyog客户端的操作界面卡住了。
于是再开了个新的窗口。也不知道这个sql要执行多久,只能等着了。
3小时过后,这个sql窗口还是老样子,也不知道删除成功了多少数据。
在新的窗口中查询数据表,还是一样的数据量,应该是在卡住的窗口删除了一些数据但是没有提交,因此在新的窗口,数据量没有变化。
*****
在等待的时间中