1.
我们今天聊点简单的,就一个单词DISTINCT。
2.
在数据分析处理过程中,我们经常需要去除查询结果中的重复值,保留截然不同的唯一值。
对于SQL,这类问题,我们通常使用DISTINCT关键字处理。
其语法如下:
SELECT DISTINCT 字段名 FROM 表名
举个简单栗子。
![38ef7a7ca49e73862398c0543ffb5037.png](https://i-blog.csdnimg.cn/blog_migrate/80460a1181040a07732aac0aee8a8895.jpeg)
如上图所示,Excel工作表的表名为“学生表”,A列是姓名,B列是学科,其中A列的姓名存在重复,比如“看见星光”,现在需要使用SQL语句提取不重复的学生名单。
代码如下:
SELECT DISTINCT 姓名 FROM [学生表$]
查询结果如下:
![bbeb5a81b800fcd65536e81c8a17d643.png](https://i-blog.csdnimg.cn/blog_migrate/3445f2978934b5fc4139571d2fdc5dd1.jpeg)
从查询结果可以看出,重复的人名已被剔除;
但数据排列顺序也和数据源不同了。
事实上,系统的操作过程是先对查询结果排序,然后从中剔除重复值。
在Excel中,当查询结果是非中文时,比如数字和字母,DISTINCT处理后的结果明显为升序排列。
当查询结果是中文呢?
其实中文也是按升序排列的……只是排序规则不是我们平常所熟知的拼音或笔划顺序。
![48c126429e79b78194cbb9eaac55a254.png](https://i-blog.csdnimg.cn/blog_migrate/4a1dbaee2db90f3bfddad898270391c8.jpeg)
……
如果需要去重的数据是多列,在DISTINCT关键字后指定多个字段名,彼此间使用英文逗号间隔即可。
依然使用上述例子,查询去除姓名和学科同时重复的值,语句如下:
SELECT DISTINCT 姓名,学科 FROM [学生表$]
查询结果:
![bf4e3ec00561004b912a479ef20cc4fd.png](https://i-blog.csdnimg.cn/blog_migrate/acb94293f9299546af85786dc39aba59.jpeg)
从查询结果可以看出,只有姓名和学科同时都重复的(看见星光 文言文研究)才被删除了。
3.
今天的分享系不系很简单呢?
比起函数或者VBA来,SQL去重简直简单的不像话~
但需要说明的是DISTINCT可以处理的字符串最大长度为255,当字符串长度超过255时,会造成计算错误,同时查询结果也只返回255长度的记录。
……祝快乐吧!
所谓快乐,就是时
光在飞快中度过……下期见~
图文制作:看见星光
专业的职场技能充电站