mysql中查询group by 的使用方法
最近在弄程序的使用用到了,多表联查里面的count(*),因此查出的结果要使用到group by这个sql关键字。
应用场景如下:
表class
id | name | des |
1 | 三年1班 | 洛阳市三年一般 |
2 | 三年2班 | 洛阳市三年2班 |
表student
id | name | cid |
1 | zhangsan | 1 |
2 | lisi | 1 |
3 | 王五 | 2 |
4 | 樱木 | 1 |
要查出,以班级为单位,各班的人数。cid是外键,关联class表的id
sql 语句如下:
SELECT a.*,COUNT(b.id) AS student_num FROM class AS a LEFT JOIN student AS b ON a.id=b.cid;
以为这样就能得到结果。
然而结果如下:
得到的结果只有1条数据,原因就是没有使用组进行区分。
我们都知道mysql数据库里是一个二维数组,上面的语句明显没有区分条件,所以被混为一谈了,区分条件就需要使用组,也就是今天要说的group by
所以我们需要以班级作为分类的标准来进行输出
SELECT a.*,COUNT(b.id) AS student_num FROM class AS a LEFT JOIN student AS b ON a.id=b.cid GROUP BY a.id;
得到了正确的结果。
ok,今天就说道这里。如果有不正确的地方欢迎指正和交流。
发布时间:2018-04-24,17:57:29
mysql中查询group by 的使用方法。