数据库删除重复数据MySql语句_mysql使用sql语句删除重复数据(去重)

第一个

假如有一个数据表sm_movies

a80666c6db05c7994ef92b1c34923469.png

里面有重复的电影想去掉重复的并且保存一个movies_id值最大的那一个DELETE FROM `sm_movies` WHERE movies_id NOT IN

(

SELECT * FROM (

SELECT MAX(movies_id) as movies_id FROM `sm_movies` GROUP BY title

) AS tmp

);

首先使用下面语句查出来重复的title记录,并从每组中取中movies_id最大的那个idSELECT MAX(movies_id) FROM `sm_movies` GROUP BY title

然后用 not in把查出来的movies_id排除掉,剩下的就是要删除的记录

第二个

如下图

8df48dc162c1ce6401535a490bb9cf53.png

里面有很多重复的项重复的条数还不固定  本来short_id应该是不能重复的

想实现的是让short_id 唯一 其它的都删除掉 只留下一个  user_id 字段值最大的出来delete from user

where   short_id in ( select short_id from (select short_id    from kl_user group by short_id      having count(short_id) > 1) as tem)

and     user_id not in (select user_id from (select MAX(user_id) as user_id from kl_user group by short_id     having count(short_id)>1) as temp )

可以看到语句有两个条件

条一个条件把 short_id 这个字段有重复的取出来

第二个条件从重复的short_id中把user_id值最大的那一条取出来,把这一条除外,这样删除的时候就留下来啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值