Mysql分组查询group by如何查询出不需要分组的列?

码云
2020-12-08 14:12

分组查询要求我们只能查询和分组列和聚合计算的列,这为一些不参与分组列的查询带来不便。常用方法有两个:

1)强制把不参与分组的列加入到group by中

2)再次join表将不分组的列查询出来

这两个方法都可以把不分组的列查询出来,但是要么太繁琐要么性能有所损失,除了上面的两个方法意外,我们还可以使用下面的办法解决不分组列的查询问题:

SELECT 
    class_id,
    MAX(c.class_name) AS class_name,
    MAX(c.grade) AS grade,
    count(1)
FROM student s
LEFT JOIN clazz c ON s.class_id=clazz.id
GROUP BY class_id
ORDER BY class_id

上面的sql语句中,只class_id分组统计学生数,但同时又想查询出班级名称、年级等信息。我们可以使用MAX的聚合计算方式来获取。

全部评论

相关文章