欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql删除重复数据并保留一条

程序员文章站 2022-03-04 18:42:52
...

需要将表中重复的数据删除,并且保留一条。

如下,要删除un=aa的数据

测试数据:

Mysql删除重复数据并保留一条

思路:

找出un=aa的所有记录,删除非记录中主键最大值的数据。

    DELETE FROM tb_user WHERE id <> (SELECT max(id) FROM tb_user) AND un='aa'

报错如下:

You can’t specify target table ‘tb_user’ for update in FROM clause

原因:

不能依照同一张表中select的数据来对同一张表进行update操作。

解决:

将子select到的数据放入零时表,通过零时表选择最大id。

    DELETE FROM tb_user WHERE id <> (SELECT max(id) FROM (SELECT id FROM tb_user WHERE un='aa') ) AND un='aa'

报错:

Every derived table must have its own alias

原因:

子查询出的表明必须指定别名。

解决:

指定一个别名即可。

    DELETE FROM tb_user WHERE id <> (SELECT max(AA.id) FROM (SELECT id FROM tb_user WHERE un='aa') AS AA) AND un='aa'

结果:

Mysql删除重复数据并保留一条

成功,Perfect!

相关标签: Mysql