使用mysql group by显示计数为0的行

时间:2009-04-13 09:37:57

标签: mysql group-by

我在MySql中有两个表 公司:(cname,city) 作品:( ename,cname,salary)

我想展示为每家公司工作的员工人数, 即使这个数字是零。

例如 为了

Company : 
Microsoft Bangalore
IBM       NY

works : 
emp1 Microsoft 10000
emp2 Microsoft 90000
输出应该是:

Microsoft 2
IBM 0

但以下查询和其他类似查询仅打印 那些至少有一名员工的公司:

Select count(*) from works natural join company group by company.cname

如果我使用外部联盟,那么零雇员的公司仍会显示 在一行中,所以也可以选择。

怎么做?

3 个答案:

答案 0 :(得分:22)

LEFT JOIN的经典案例:

SELECT
  c.cname,
  COUNT(w.ename) wcount 
FROM
  company c
  LEFT JOIN works w ON c.cname = w.cname
GROUP BY
  c.cname

答案 1 :(得分:1)

尝试

Select company.cname, count(work.id) from company left join work on ....=.... group by company.cname

您填写“....”部分,并将work.id更改为您的姓名

答案 2 :(得分:0)

使用子查询还有另一种方法,这是我案例中的一个示例:

list_employee