【问题标题】:How to combine JOIN and COUNT如何结合 JOIN 和 COUNT
【发布时间】:2021-03-15 05:33:54
【问题描述】:

我有两张桌子;产品和响应。

我需要获取当前产品的响应量。

例如,ID 为 106 的产品有两个响应,ID 为 105 的产品有一个响应。

其他产品没有响应。

我的查询示例:

SELECT * 
  FROM products P 
  LEFT 
  JOIN response R 
    ON R.product_id = P.id

它返回 14 个数组(我只有 13 个产品),因此一个有两个响应的产品重复两次。

我应该创建更准确的查询,返回每个产品的响应数量..

【问题讨论】:

  • 请花几分钟时间编辑您的问题,以将示例数据作为表格包含在文本中。

标签: mysql join count


【解决方案1】:

按您要从products 表中选择的所有列分组

SELECT P.id, count(r.product_id) as response_count
FROM products P 
LEFT JOIN response R ON R.product_id = P.id
group by P.id

【讨论】:

    【解决方案2】:

    这将返回包含 product_id 和 product_count 两列的记录。

    SELECT product_id, COUNT(*) as product_count FROM products P LEFT JOIN response R ON R.product_id = P.id" GROUP BY product_id
    

    【讨论】:

      【解决方案3】:

      在不确切知道响应量的情况下,有两种情况。

      这个问题之前也有回答 (MySQL LEFT JOIN with GROUP BY and WHERE IN (sub query))

      统计回复

      SELECT R.product_id, count(P.id) as NumberOfResponses 
      FROM products P 
      LEFT JOIN response R 
      ON R.product_id = P.id
      group by R.product_id
      

      对响应数量求和

      SELECT R.product_id, sum(P.quantity_column) as TotalQuantityOfResponses FROM products P 
      LEFT JOIN response R 
      ON R.product_id = P.id
      group by R.product_id
      

      【讨论】:

        猜你喜欢
        • 2014-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多