删除重复数据只保存一条数据

1.查询多条重复的数据

SELECT
    *
FROM
    app_store.app_file
WHERE
    app_id IN (
        SELECT
            app_id
        FROM
           app_store.app_file
        GROUP BY
            app_id
        HAVING
            count(app_id) > 1
    )

2.删除多条重复数据,只保留一条
网上最多的一种写法:

delete from app_store.app_file  
where app_id  in (select  app_id  from app_store.app_file group  by  app_id   having  count(app_id) > 1)  
and id not in (select min(id) from  app_store.app_file  group by app_id  having count(app_id)>1)  

会报错:You can’t specify target table ‘app_file’ for update in FROM clause

修改后:

DELETE FROM app_store.app_file
WHERE app_id IN (SELECT * FROM (SELECT app_id FROM app_store.app_file GROUP BY app_id HAVING COUNT(app_id) > 1) t1)
AND id NOT IN (SELECT * FROM(SELECT MIN(id) FROM app_store.app_file
        GROUP BY app_id
        HAVING COUNT(app_id) > 1) t2)

猜你喜欢

转载自blog.csdn.net/qq_30017363/article/details/83146684