接上文,上篇讲了Python列表和字典的去重方法,本篇主要总结Excel和MySQL的去重方法。

  • Excel去重
  1. 解法一:直接使用【数据】—>【删除重复值】按钮,下面看示例和图解步骤:

    先选中你要删除重复值的那一列数据,然后再按照上图👆的步骤走。

接着就是确认你要删除的重复值数据范围(一列还是多列):

最后就是删除后的确认

查看删完重复值的数据:

是不是很简单😀。

当然这里还有其他方法,比如下面的:

  1. 解法二,使用COUNTIF函数
    首先找到 【公式】—>【其他函数】---->【统计】----->【COUNTIF】 这里:

    接着在空白处单元格点击COUNTIF后,再填上要计算的单元格按如下格式:


然后得到数字1位于新的单元格里面,接着采用自动填充对其余单元格计算,得到如下数据:

最后 使用【数据】------>【筛选】功能,选取(=1) 的单元格,就得到无重复的数据:



当然要是你肯多花时间,肯定还会发现其他Excel去重的方法,但是对比上面的两方法,第一个解法最便捷!!!

  • MySQL去重
  1. 相信大家会很快的想到DISTINCT,没错,它主要是用于查询的时候过滤重复数据,一般放在要查询字段的开头,例子掌柜随意例举:

    现在我们要对Name字段去重,就使用如下命令:
SELECT DISTINCT Name FROM test_name;

  1. 解法二,使用GROUP BY …
  2. 那么,如果查询过滤重复值的时候要保留前面的Id字段呢?即去重某一字段后显示所有字段内容又该如何处理?
    看下面👇解法一
SELECT * FROM test_name WHERE Id IN (SELECT MIN(Id) FROM test_name GROUP BY Name);


这个解法应该很好理解,掌柜就不多做解释,下面看第二种解法👉使用窗口函数

SELECT S.Id, S.Name 
FROM 
(SELECT *, ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Id) AS Num FROM test_name) S 
WHERE S.Num = 1;

以Name分组,Id来排序,只取行数等于1的值显示即可,这样就成功拿到含有Id的不重复所有字段:

(未完待续2.。。。)