mysql删除具有重复分组列的记录

时间:2014-01-28 18:36:14

标签: mysql duplicates

我有一个结构如下的表

enter image description here

我想删除所有包含相同字段的重复记录,字段为 BUY_ITEM ALSO_BUY ..

例如,在RULE_ID号码2和7上方的图片中, CD-ROM MOUSE 均为fields BUY_ITEM BUY_ALSO 即可。

所以我想只保留RULE_ID = 2 的第一条记录,并删除RULE_ID = 7 的第二条记录

结果就像这样

enter image description here

我正在使用SELECT DISTINCT来过滤重复的记录,这里是查询

select distinct BUY_ITEM, ALSO_BUY from result

得到了这样的结果

enter image description here

但我不知道将分组列(BUY_ITEM和ALSO_BUY)作为条件删除重复记录的查询。

你能告诉我怎么做吗?

之前感谢

1 个答案:

答案 0 :(得分:1)

在MySQL中,您可以在join命令中使用delete。因此,您可以汇总数据以获得所需内容:

delete t
    from table t join
         (select buy_item, also_buy, min(rule_id) as minid
          from table t
          group by buy_item, also_buy
          having count(*) > 1
         ) ba
         on t.buy_item = ba.buy_item and t.also_buy = ba.also_buy
    where rule_id > minid;