MySQL select 子查询复用,进行聚合计算
概览
当对一个复杂的子查询结果进行分组(group by
)聚合计算时,
有时需要进行多次聚合,如果不能复用自查寻的结果,查询效率会很低下
在有些情况下,可以使用 IF
函数进行不同条件的聚合
示例
假设子查询的结果有班级,学号,平均分这3个字段(class, no, score
)
现在想求每个班级的总人数和及格人数
复用前
|
|
可以看出,需要查询 SUB_QUERY
两次
复用后
|
|
可以看出,子查询只有一次,而且 SQL 更简洁
结论
使用 IF
函数复用只适用于特定情况,别的希望子查询复用,可以使用临时表
- 原文链接:https://www.gocode.top/post/2017/12/05/mysql-sub-query-group/
- 版权声明:本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,转载请注明出处(作者「阿然」,原文链接)。