【问题标题】:mysql delete records with duplicated grouped columnsmysql删除具有重复分组列的记录
【发布时间】:2014-01-29 02:45:06
【问题描述】:

我有一个如下结构的表格

我想删除所有具有相同字段的重复记录,字段为BUY_ITEMALSO_BUY..

例如,在上面的 RULE_ID 编号 2 和 7 上都有 CD-ROMMOUSE 作为fields BUY_ITEM购买_ALSO

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

的第二条记录

结果会是这样的

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

select distinct BUY_ITEM, ALSO_BUY from result

得到这样的结果

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

你能告诉我怎么做吗?

感谢之前

【问题讨论】:

    标签: mysql duplicates


    【解决方案1】:

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

    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;
    

    【讨论】:

    • 感谢回复.. 查询仍然错误,我尝试修复它,但它不会这样做.. 错误在 delete t from table t join.. 错误消息是 table t 没有定义。如果我要执行此查询,是否删除了值为 7RULE_ID 而保留了值为 2RULE_ID
    • @SoniGunz 。 . .该查询适用于 SQL Fiddle (sqlfiddle.com/#!2/b7459)。您可以先使用select 运行查询,以查看将删除的内容。
    • 它确实有效!我将t.also_buyt.buy_item 打错了.. 难怪我有错误.. 非常感谢兄弟.. :)
    猜你喜欢
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2015-12-29
    • 1970-01-01
    • 2013-04-23
    相关资源
    最近更新 更多