首页 > 上网技巧 > 电脑小技巧 > mysql删除表中重复的数据

mysql删除表中重复的数据

时间:2018-07-16 09:54 作者:QQ地带 我要评论

今天在工作中遇到了一个注册绑定微信UID的问题。按正常逻辑来说,一个手机号只能绑定一个UId,但问题总是会只有你想不到没有你做不到,有个客户居然用一个手机号绑定了几百个手机号,具体是为了干什么就不说了。有一个人能想到这样的方法,就会有第二个人能想到,之后就不用说了越来越多。仅仅几天数据库里的数据已经几万条了,慢慢的我意识到了这样下去肯定是不行的,必须想办法解决。刚开始是手动删除重复的数据,但是太多了,手动删简直是没法弄,不删还不行,给字段加唯一索引必须要把重复的数据删掉。我的那个头疼啊,还好有个同事mysql水平很好,帮我写了一个sql,并顺利的解决了我的问题,真的是谢天谢地!
 
[sql]
 
delete from [table_name] where [primary key] in (select [primary key] from (select [primary key]
FROM
   [table_name]
WHERE
    [重复的字段名] IN (
        SELECT
            [primary key]
        FROM
            [table_name]
        GROUP BY
            [重复的字段名]
        HAVING
            count([重复的字段名]) > 1
    )
AND [primary key] NOT IN (
    SELECT
        min([primary key])
    FROM
        [table_name]
    GROUP BY
        [重复的字段名]
    HAVING
        count([重复的字段名]) > 1
))a)
 
这段sql不仅解决了我的燃眉之急,并且还帮我保留了重复数据中的一条最老的数据!
 
虽然sql写的很完美但是也要经过实践才能是不是正确的!
 
SELECT * FROM [table_name] group by [重复的字段名] HAVING count(*)>1
 
查询条数为0,sql正确无误,漂亮!

标签: mysql
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告