• 京东联盟开发(12)——删除MySQL表中重复记录并且只保留一条


    本文介绍如何删除商品表中的一些重复记录。

    有时,一条商品由于有多个skuid,比如某种手机有不同颜色,但价格、优惠等信息却是一致,导致其被多次收录。由于其各种条件基本类似,这样它在商品中多个sku都排一起。一方面影响占用了表的空间,另一方面给客户的效果也不美观。这里需要删除这些重复记录。

    一、设定唯一标识

    通过截取商品前面指定长度的字符,来给商品设定唯一标记。

    SQL脚本如下

    UPDATE `yhq_jdunion_goods3` SET `unionid` = LEFT(`goodsname`, 18);

    二、搜索重复数据

    搜索一下重复记录有多少条。SQL脚本如下

    select `unionid`,count(*) as count from `yhq_jdunion_goods3` group by `unionid` having count>1

    搜索后可以看到有很多重复商品

    三、删除多余记录

    SQL脚本如下

    delete from `yhq_jdunion_goods3` where  
    id not in( select id from (select max(id) as id,count(`unionid`) as count from `yhq_jdunion_goods3` 
    group by `unionid` having count =1 order by count desc) as tab)
    AND
    id not in( select id from (select max(id) as id,count(`unionid`) as count from `yhq_jdunion_goods3`
    group by `unionid` having count >1 order by count desc) as tab)

    最后,再用搜索重复记录的脚本搜索验证一下,发现没有重复的了。

  • 相关阅读:
    WPF Expander 炫酷自定义Style
    C#8.0 中的 【索引与范围】
    Windows的图形设备接口与Windows绘图
    第一个Windows窗口应用程序
    0-1背包问题的分枝—限界算法
    哈密尔顿回路(旅行售货员问题)的回溯算法
    背包问题的贪心算法
    实现矩阵连乘的动态规划算法
    用分治策略实现棋盘覆盖问题
    sql注入实例分析
  • 原文地址:https://www.cnblogs.com/txw1958/p/jdunion-remove-repetitive-goods.html
Copyright © 2020-2023  润新知