Mysql删除重复数据保留最小的id


本文摘自PHP中文网,作者一个新手,侵删。

在网上查找删除重复数据保留id最小的数据,方法如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

DELETE

FROM

    people

WHERE

    peopleName IN (

        SELECT

            peopleName

        FROM

            people

        GROUP BY

            peopleName

        HAVING

            count(peopleName) > 1

    )

AND peopleId NOT IN (

    SELECT

        min(peopleId)

    FROM

        people

    GROUP BY

        peopleName

    HAVING

        count(peopleName) > 1

)

自己使用的时候显示报错:


1

1 delete from tb where id in (SELECT max(id) from tb GROUP BY user HAVING count(user)>1)

[Err] 1093 - You can't specify target table ‘XXX’ for update in FROM clause

暂时不知道是什么原因导致的。

然后想办法分布操作,首先筛选出有重复user的数据,然后用max()选出其中较大的那一行:

SELECT max(id) from tb GROUP BY user HAVING count(user)>1

然后再根据得到的max(id)逐条删除多余的数据


1

1 delete from tb where id=xx

以上就是Mysql删除重复数据保留最小的id的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

linux上优化mysql技巧

mysql数据库】第三章解读:服务器性能剖析 (下)

mysql 修改编码失败怎么办

关于mysql explain中key_len的计算方法讲解

索引是什么?

mysql出现10055错误怎么办

mysql慢查询以及重构查询的方式记录

mysql视频教程的源码课件推荐

mysql如何多表连接sql语句

解决mysql不是内部或外部命令也不是可运行的程序或批处理文件的问题

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...