Excel VBA+ADO+SQL入门教程005:使用SQL实现数据去重

1.

我们今天聊点简单的,就一个单词DISTINCT。

2.

在数据分析处理过程中,我们经常需要去除查询结果中的重复值,保留截然不同的唯一值。对于SQL,这类问题,我们通常使用DISTINCT关键字处理。

其语法如下:

SELECT DISTINCT 字段名 FROM 表名

举个简单栗子。

如上图所示,Excel工作表的表名为“学生表”,A列是姓名,B列是学科,其中A列的姓名存在重复,比如“看见星光”,现在需要使用SQL语句提取不重复的学生名单。

代码如下:

SELECT DISTINCT 姓名 FROM [学生表$]

查询结果如下:

从查询结果可以看出,重复的人名已被剔除;但数据排列顺序也和数据源不同了。

事实上,系统的操作过程是先对查询结果排序,然后从中剔除重复值。

在Excel中,当查询结果是非中文时,比如数字和字母,DISTINCT处理后的结果明显为升序排列。

当查询结果是中文呢?其实中文也是按升序排列的……只是排序规则不是我们平常所熟知的拼音或笔划顺序。

……

如果需要去重的数据是多列,在DISTINCT关键字后指定多个字段名,彼此间使用英文逗号间隔即可。

依然使用上述例子,查询去除姓名和学科同时重复的值,语句如下:

SELECT DISTINCT 姓名,学科 FROM [学生表$]

查询结果:

从查询结果可以看出,只有姓名和学科同时都重复的(看见星光 文言文研究)才被删除了。

3.

今天的分享系不系很简单呢?

比起函数或者VBA来,SQL去重简直简单的不像话~

但需要说明的是DISTINCT可以处理的字符串最大长度为255,当字符串长度超过255时,会造成计算错误,同时查询结果也只返回255长度的记录。

……祝快乐吧!所谓快乐,就是时光在飞快中度过……下期见~

图文制作:看见星光

专业的职场技能充电站

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190904A031R000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券