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的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

mysql实现防止添加购物车重复的代码实例

mysql开启慢查询日志的方法详解

mysql中如何解码base64编码的字符串?

mysql中分区表的详细介绍

linux下安装mysql的教程详解

如何源码安装mysql数据库?

布尔教育燕十八mysql入门视频教程的资源(源码课件)推荐

mysql router怎么样

mysql中utf8_unicode_ci、utf8_general_ci有什么区别?

mysql数据库条件查询语句的使用方法介绍

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


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

数据库系统概念 第6版

机械工业出版社

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



打赏

取消

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

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

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

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

评论

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