为什么分组函数(avg、max、min、count、sum)不能放在where里用,mysql

  • Post author:
  • Post category:mysql


sql语句的执行顺序,这也就是为什么分组函数(avg、count等)不能在where中直接使用的原因,因为where是优先于分组group by执行的,当然如果没有group by就是默认整张表是一个组。

同时对于分组函数而言是自动过滤掉null的,不必额外限制条件过滤。

值得我们注意的是,sql语句中,select后面只能跟分组函数和参与分组的字段,出现其他的就会报错
如下是我们想查看每个工种的最高薪资以及对应名字
mysql> select ename,max(sal),job from emp group by job;
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'yuuki.emp.ENAME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

在这里插入图片描述



版权声明:本文为pige666原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。