刚刚修复了typecho的CateFilter插件某种情况下会重复输出文章的bug,就是用的GROUP BY
语法。
我修的过程其实一点都不了解GROUP BY
,因为百度搜索sql去重复的时候推荐了这个我就用了。然后想起来自己写过《SQL笔记一》的文章,而且文章过去挺久的了,所以我就想是时候再水一篇文章了。
然后就百度查GROUP BY
到底是干嘛的,搜到了各种优秀例子,各种说明,我都没看懂!然而,突然看到了个非常浅显的例子我就懂了。
GROUP BY
就是分组函数
比如 现有
性别 男 3 人 体重 50KG/60KG/70
性别 女 2 人 体重 40KG/30KG
这时 你用到GROUP BY
进行分组
select sum(体重) ,性别 from 表明 group by 性别 ;
则能得到结果 男 180 女 70
等于说 是按照你所GROUP BY
的东西进行分组 ,然后再对分组内的东西进行操作
就是这么个简单的例子,我们就可以理解这个函数的作用了,也能理解为什么他们够去除重复行。比如这个例子按某性别列的值分组,那么值相等的为一组,所以就排除掉了其他的
上面是GROUP BY
接单列的例子,那么多列又是什么样呢?
姓名 | 班级 | 性别 | 分数 |
---|---|---|---|
张1 | 1班 | 男 | 60 |
张2 | 1班 | 女 | 70 |
张3 | 1班 | 男 | 80 |
张4 | 1班 | 女 | 80 |
张5 | 2班 | 男 | 70 |
张6 | 2班 | 女 | 60 |
张7 | 2班 | 男 | 80 |
select 班级,性别,AVG(分数) as 平均分
from test
group 班级,性别
得出的结果是
班级 | 性别 | 平均分 |
---|---|---|
1班 | 男 | 70 |
1班 | 女 | 75 |
2班 | 男 | 75 |
2班 | 女 | 60 |
这样就好理解多了。