Mysql根据字段查询和删除重复数据

实际开发中遇到一个问题,线上系统报错,需要手动向库里插入数据,然后点了两次手动发送按钮,导致库中有重复的数据。需求:根据某个字段查询重复数据并删除

1.查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先列下:

select * from table1 t1 where (t1.username) in  (select username from table1 group by username  having count(*) > 1)

2.删除重复数据并保留id最小的数据(以下是搜出来的)

delete from people 
where peopleId  in (select  peopleId  from people  group  by  username   having  count(username) > 1)
and rowid not in (select min(rowid) from  people  group by username  having count(username )>1)

但是执行会报错,

You can't specify target table for update in FROM clause

意思是说mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
这是需要一个中间临时表,将删除改成以下

delete from 
people 
where 
peopleId in 
    (select peopleId 
        from 
        (select id from people 
            where 
            peopleId in     (select peopleId from people group by username having count(username)>1) 
            and peopleId not in(select min(peopleId) from people group by username having count(username)>1)
        ) as tmpresult
    )

多字段属性删除

DELETE
FROM
    user_organization_access a
WHERE
        (a.user_id, a.organization_id) IN (
            select user_id,
                   organization_id from (
        SELECT
            user_id,
            organization_id
        FROM
            user_organization_access
        GROUP BY
            user_id,
            organization_id
        HAVING
                count(*) > 1)t1
    )
  AND organization_login_id NOT IN (
      select * from (
    SELECT
        min(organization_login_id)
    FROM
        user_organization_access
    GROUP BY
        user_id,
        organization_id
    HAVING
            count(*) > 1) t
)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 12,405评论 5 115
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 11,017评论 0 9
  • 什么是数据库? 数据库是存储数据的集合的单独的应用程序。每个数据库具有一个或多个不同的API,用于创建,访问,管理...
    chen_000阅读 9,483评论 0 19
  • MYSQL执行如下语句报错: UPDATE sc SET grade =grade*1.05 WHERE grad...
    朝畫夕拾阅读 12,115评论 2 3
  • 时隔了两个周,感觉像是过了一个月那么久。 当初立下心志,每周写一篇日记,记录我这一生所经历的大大小小的事。平淡的、...
    出于你默然不语阅读 5,506评论 5 6

友情链接更多精彩内容