目录
首先来看下题目:
现在查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据。
user表 | ||||
id | name | age | gender | university |
1 | Atom | 21 | man | 清华大学 |
2 | Atom2 | 20 | man | 北京大学 |
3 | Atom3 | 23 | woman | 复旦大学 |
4 | Atom4 | 25 | woman | 清华大学 |
5 | Atom5 | 23 | man | 复旦大学 |
1、使用DISTINCT关键字去重
这时候我们可以使用关键字 distinct 进行去重处理
SELECT DISTINCT university FROM user
再复习下DISTINCT,DISTINCT函数一般放在select后面,DISTINCT后面跟要去重的字段,表达式为:
select distinct 要去重的字段 from 表
2、使用GROUP BY分组去重
还有一种办法就是使用GROUP BY进行分组处理去重
SELECT university FROM user GROUP BY university
在使用GROUP BY进行去重时,需要把去重的字段放在GROUP BY后面,需要注意的是select后面跟的字段(除聚合函数的字段外)必须都出现在group by后面,但是group by后面的字段,可以不全部出现在select后面(如:select a,b from 表 group by a 这个就是不行的 但是如果 select a,b from 表 group by a,b,c 或者 select a,avg(b) from 表 group by a 这两个语法就没问题 )
3、知识点补充:对多个列去重
我们想对age和university两个列去重,应该怎么办呢?
这时候就需要把age和university看成一组数据,只有表中 age和university 都一样时才会进行去重,如表中的3和5.
可使用语句:
SELECT university,age FROM user GROUP BY university,age
或者
SELECT DISTINCT university,age FROM user
DISTINCT和GROUP BY都是对后面的所有字段进行分组过去,不只是紧挨着的那个字段
下图为公众号二维码,内容会同步发出,大家可以关注一起学习