前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >sql 删除重复的数据,保留一条,并且保留update_time最大的那条

sql 删除重复的数据,保留一条,并且保留update_time最大的那条

作者头像
Theone67
发布2020-03-19 15:49:58
1.4K0
发布2020-03-19 15:49:58
举报
文章被收录于专栏:only theone 的记录

近期面试的时候,考官出了一道题,当时没有做出来。第二天灵光乍现吧,写出来了,特此记录一下。

有一张表t,三个字段,自增id,name,update_time,删除name重复的行,保留update_time最大的那一条,只保留一条

代码语言:javascript
复制
DELETE
FROM
    t
WHERE
    t.`name` IN (
        SELECT
            t.`name`
        FROM
            (SELECT * FROM t) t
        GROUP BY
            t.`name`
        HAVING
            count(1) > 1
    )
AND t.id NOT IN (
    SELECT
        substring_index(max(t.new_u_time), ',', - 1)
    FROM
        (
            SELECT
                t.id,
                t.`name`,
                t.update_time,
                CONCAT(t.update_time, ',', t.id) new_u_time
            FROM
                t
        ) t
    GROUP BY
        t.`name`
    HAVING
        count(1) > 1
)

说明:如果是随便删除,保留一行,那大家应该都会,这里就是可能会出现update_time重复的情况,所以需要update_time和id concat 起来,然后取最大值,这样就不会重复了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档