一条sql对mysql数据库中重复记录去重

2017-12-05  本文已影响0人  老季的私密空间

前几天接到一个数据库去重的需求,大概意思是这样的:我们数据库中有一个存储用户第三方信息的表,因为之前程序漏洞导致记录中一个用户对应了多个第三方信息。现在需要保证一个用户ID只能有一条记录,对于多条记录的用户ID保留最近绑定的记录。

数据库表结构

user_thirdpart` (

USER_ID int(11) NOT NULL COMMENT,

THIRD_MESSAGE text CHARACTER,

GMT_CREATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

解决方法

百度了各种方法之后还是后未能成功,最终结合网上的方法解决。具体sql如下

DELETE user_thirdpart 
FROM  user_thirdpart, 
 (
        SELECT
            user_id,
            max(gmt_create) gmt_create
        FROM
            user_thirdpart
        GROUP BY
            user_id
        HAVING
            count(1) > 1
    ) temp
WHERE
    user_thirdpart.user_id = temp.user_id 
    AND user_thirdpart.gmt_create < temp.gmt_create

sql解析:

上一篇 下一篇

猜你喜欢

热点阅读