Mysql 是否可以在没有联接的情况下按计数(不同)分组?

Mysql 是否可以在没有联接的情况下按计数(不同)分组?,mysql,join,group-by,distinct,Mysql,Join,Group By,Distinct,每个公司pk=ID可以有一个或多个员工 Table 1 : (Company) ID Name 1 A 2 B 3 C 查询: Table 2 : (Employee) (CompanyID referencing ID) CompanyID EmpID Name 1 1 Joe 1 2 Doe 1 3 Boe 2 4 Lou 3 5 Su 3

每个公司pk=ID可以有一个或多个员工

Table 1 : (Company)

ID Name
1  A
2  B
3  C
查询:

Table 2 :  (Employee)  (CompanyID referencing ID)

CompanyID EmpID Name
1         1     Joe
1         2     Doe
1         3     Boe
2         4     Lou
3         5     Su  
3         6     Ram
对于这个查询,我只需要一个具有不同companyId计数的结果。因此,在这种情况下,'2'[公司A和C]

简而言之,我要找的是有2名或更多员工的公司数量

Table 1 : (Company)

ID Name
1  A
2  B
3  C
在没有临时表或联接的情况下,是否仍然可以获得结果?我正在使用MySQL。

是:

select CompanyID, count(*) from Employee group by CompanyID having count(*) > 1; # Lists companies and their counts.

CompanyID count(*)
1         3  
3         2
或适用于以下范围:

select count(*) from
(select CompanyID from Employee group by CompanyID having count(*) > 1) v

是的,可以使用子查询:

select count(*) from
(select CompanyID from Employee group by CompanyID 
 having count(*) >= 5 and count(*) < 10) v
或:


我在考虑这个解决方案,但我认为这可能不是最有效的。也许是吧!谢谢…我们能指望*范围吗?比如说,拥有5名或更多员工但少于10名员工的公司数量?对不起,我知道了:计数>=5或计数<10错误代码:1248。每个派生表都必须有自己的别名。所以我想需要一个别名。是的,子查询中需要别名。
SELECT COUNT(DISTINCT CompanyID) 
FROM Employee AS e
WHERE EXISTS
      ( SELECT *
        FROM Employee AS e2
        WHERE e2.CompanyID = e.CompanyId
          AND e2.EmpID <> e.EmpID
      )
SELECT COUNT(*)
FROM
  ( SELECT 1 
    FROM Employee 
    GROUP BY CompanyID 
    HAVING MAX(EmpID) > MIN(EmpId)
  ) AS grp