首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql删除重复数据

Mysql删除重复数据

作者头像
华创信息技术
发布2020-03-09 10:35:01
17.5K1
发布2020-03-09 10:35:01
举报

文章时间:2020年3月8日 19:27:36 解决问题:删除表中的重复数据 基于数据库:Mysql 5.7 version

查询重复数据

SELECT openid,COUNT(openid)
FROM  表名 
GROUP BY openid
HAVING  COUNT(openid) > 1
Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)

上面提供两种写法,直接复制粘贴替换相应的字段即可。

删除重复数据

删除全部的重复数据(注意! 注意! 注意! 这是全部删除,不是只保留一条的,只保留一条的继续看后面)

DELETE
FROM
    表名
WHERE
    dname IN (
        SELECT
            t.字段名
        FROM
            ( select 字段名
            FROM 表名
         GROUP BY
            字段名
        HAVING
            count(1) > 1
            ) t
    )

只保留一条,去掉重复的数据(执行效率我没做测试,能实现,效率自己测试下吧)

DELETE
FROM
    表名
WHERE
    这里写你的表id NOT IN (
        SELECT
            t.minno
        FROM
            (
                SELECT
                    MIN(id) AS minno
                FROM
                    表名
                GROUP BY
                    字段名
            ) t
)

不解的报错

[Err] 1093 - You can't specify target table 'dept' for update in FROM clause 原因:更新这个表的同时又查询了这个表,查询这个表的同时又去更新了这个表,可以理解为死锁。mysql不支持这种更新查询同一张表的操作。所以我们用生成临时表去操作,上面的语句就是这么写的。复制即可。

参考文献

  • mysql删除重复记录并且只保留一条:https://blog.csdn.net/n950814abc/article/details/82284838
  • PostgreSQL中删除重复行(保留一行):https://blog.csdn.net/ljy520yzy/article/details/8631264
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-8 1,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 查询重复数据
  • 删除重复数据
    • 删除全部的重复数据(注意! 注意! 注意! 这是全部删除,不是只保留一条的,只保留一条的继续看后面)
      • 只保留一条,去掉重复的数据(执行效率我没做测试,能实现,效率自己测试下吧)
      • 不解的报错
      • 参考文献
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档