【问题标题】:MySQL return values countMySQL 返回值计数
【发布时间】:2013-11-09 18:44:42
【问题描述】:

我有一个相当令人难以置信的问题。我所追求的是所有行业的列表,无论它们是否与工作相关联。所以..

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

这将返回属于某个行业的每个工作的计数,但我希望返回所有行业,无论是否有与其相关的工作。 非常感谢大家的帮助。抢

【问题讨论】:

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


    【解决方案1】:

    看来您需要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。您可以通过这种方式为这些情况添加默认值。

    【讨论】:

    • 好的,谢谢。但现在计数为所有空条目返回 1。我错过了什么。谢谢你的帮助
    • 是的,所以我们得到...例如销售额 [0]
    • 你是明星。太感谢了。周末愉快
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 2018-11-19
    • 2016-10-21
    • 2013-07-27
    • 2013-06-16
    • 2012-10-27
    • 2011-09-03
    相关资源
    最近更新 更多