Mysql-如何解决Mysql中max和count(*)联用,count(*)的最大值

Posted 赵晓东-Nastu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql-如何解决Mysql中max和count(*)联用,count(*)的最大值 相关的知识,希望对你有一定的参考价值。

一、问题

当我们使用mysql的时候MAX(COUNT(*)) 会报一下问题,那么如何解决呢?

报错 Invalid use of group function

二、场景


现在有两个表,一个是Project表,另一个是Employee表。
现在要求雇员最多的项目。
求雇员最多的项目,我们先要将项目进行分组,然后用count(*)就可以查看每个项目中有多少个雇员的了

 select count(*) from Project p1 inner join Employee e1 on p1.employee_id = e1.employee_id  group by p1.project_id  

现在我们要求的是最大值,我们这个时候用max(count(*)) 就会报错了

三、解决方案

可以改为用order by 字段 desc limit 1 的这种方式
如果用这种方式还有可能考虑到有多个最高值是一样的情况,这个时候没有关系,我们就可以用in 只要这个值一样,就可以查询出来了。
完整的SQL

 select temp.project_id  from (select p1.project_id  project_id ,count(*)  empNumber from Project p1 inner join Employee e1 on p1.employee_id = e1.employee_id  group by p1.project_id  ) as temp where temp.empNumber in ( select t.count from( select count(*) count from Project p1 inner join Employee e1 on p1.employee_id = e1.employee_id  group by p1.project_id  order by count(*) desc limit 1 ) as t) 

以上是关于Mysql-如何解决Mysql中max和count(*)联用,count(*)的最大值 的主要内容,如果未能解决你的问题,请参考以下文章

26《MySQL 教程》聚合函数(聚合函数 MIN、MAX)

mysql之count,max,min,sum,avg,celing,floor

MySQL

我如何解决 MySQL 中的“max_user_connections”问题?

Mysql Count之后日期显示最大值

如何解决MySQL超过最大连接数问题 max