首页 > 解决方案 > 如何删除重复的行,但仅限于每个产品 ID

问题描述

我想删除重复的行,但仅限于每个产品 id,下面是我的表数据:

在此处输入图像描述

运行 delete 语句后的最终结果应如下所示:

在此处输入图像描述

到目前为止,这是我的查询:

DELETE FROM `test` WHERE name IN (SELECT name FROM `test` GROUP BY name HAVING COUNT(name)>1)

标签: mysql

解决方案


您可以使用自联接来删除基于相同product_idname

delete a
from test a
left join test b on a.product_id = b.product_id
                 and a.name = b.name
                 and a.id > b.id
where b.product_id is not null

演示


推荐阅读