MySQL返回值计数

时间:2013-11-09 18:44:42

标签: mysql count group-by concat database-table

我有一个相当令人难以置信的问题。我所追求的是所有行业的清单,无论他们是否与工作挂钩。所以..

Web Design [0]
Accounts[3]
Sales[1]
Marketing[0]

因此,数据库中的作业具有随作业保存的行业ID。行业表有行业类型列表。 网页设计,账户,销售,营销等 下面是我到目前为止的SQL

SELECT ind.name,ind.id, GROUP_CONCAT(job.industry_id) AS id,
COUNT(*) AS industry_count
FROM jobs AS job,
industries AS ind
WHERE ind.id = job.industry_id
GROUP BY industry_id

这将返回属于某个行业的每个作业的计数,但我希望返回所有行业,无论是否有与之关联的作业。 非常感谢你们的帮助。罗布

1 个答案:

答案 0 :(得分:0)

您似乎需要LEFT JOIN。试试这个:

SELECT ind.name, ind.id,
  COALESCE(GROUP_CONCAT(job.industry_id), 'default_value') AS id,
  COUNT(job.industry_id) AS industry_count
FROM industries ind
LEFT JOIN jobs job ON ind.id = job.industry_id
GROUP BY ind.id

请注意,如果某个行业没有工作,您将在GROUP_CONCAT中获得null。您可以通过这种方式为这些案例添加默认值。