接上文,上篇讲了Python列表和字典的去重方法,本篇主要总结Excel和MySQL的去重方法。
- Excel去重
- 解法一:直接使用【数据】—>【删除重复值】按钮,下面看示例和图解步骤:
先选中你要删除重复值的那一列数据,然后再按照上图👆的步骤走。
接着就是确认你要删除的重复值数据范围(一列还是多列):
最后就是删除后的确认
查看删完重复值的数据:
是不是很简单😀。
当然这里还有其他方法,比如下面的:
- 解法二,使用COUNTIF函数:
首先找到 【公式】—>【其他函数】---->【统计】----->【COUNTIF】 这里:
接着在空白处单元格点击COUNTIF后,再填上要计算的单元格按如下格式:
然后得到数字1位于新的单元格里面,接着采用自动填充对其余单元格计算,得到如下数据:
最后 使用【数据】------>【筛选】功能,选取(=1) 的单元格,就得到无重复的数据:
当然要是你肯多花时间,肯定还会发现其他Excel去重的方法,但是对比上面的两方法,第一个解法最便捷!!!
- MySQL去重
- 相信大家会很快的想到DISTINCT,没错,它主要是用于查询的时候过滤重复数据,一般放在要查询字段的开头,例子掌柜随意例举:
现在我们要对Name字段去重,就使用如下命令:
SELECT DISTINCT Name FROM test_name;
- 解法二,使用GROUP BY …
- 那么,如果查询过滤重复值的时候要保留前面的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.。。。)