php - 如何在mysql中选择不同值的计数总和?

标签 php mysql distinct

这是我的查询:

SELECT 
    p.PRO_Id, p.PRO_Name,
    COUNT(DISTINCT c.COM_Id) as commentCount,
    COUNT(DISTINCT d.DIS_Id) AS disCount, 
    d.DIS_ThreadDesc,
    dev.DEV_Name,
    loc.LOC_Name,
    d.USE_Id,
    d.DIS_Date
FROM projects p
LEFT JOIN discussions d ON p.PRO_Id = d.PRO_Id
LEFT JOIN comments c ON d.DIS_Id = c.DIS_Id
LEFT JOIN developer dev ON p.DEV_Id=dev.DEV_Id
LEFT JOIN locality loc ON p.LOC_Id=loc.LOC_Id
WHERE p.PRO_Status=1 
  and d.DIS_Status=1 
  and c.COM_Status=2
GROUP BY p.PRO_Id
ORDER  BY 3 desc LIMIT 3

我想得到的是 commenCount(评论总数)和 disCount(讨论总数)的总和。
我试过这样;-

 sum(COUNT(DISTINCT c.COM_Id) + COUNT(DISTINCT d.DIS_Id)) AS totalResponse
但没有机会。

最佳答案

您可以添加两个 COUNT 的结果:

SELECT 
    p.PRO_Id, p.PRO_Name,
    COUNT(DISTINCT c.COM_Id) AS commentCount,
    COUNT(DISTINCT d.DIS_Id) AS disCount, 
    COUNT(DISTINCT c.COM_Id) + COUNT(DISTINCT d.DIS_Id) AS totalResponse
    d.DIS_ThreadDesc, dev.DEV_Name, loc.LOC_Name, d.USE_Id, d.DIS_Date
FROM projects p
...

或者使用子查询:

SELECT sub.*,
       commentCount + disCount AS totalResponse
FROM (
  SELECT 
    p.PRO_Id, p.PRO_Name,
    COUNT(DISTINCT c.COM_Id) as commentCount,
    COUNT(DISTINCT d.DIS_Id) AS disCount, 
    d.DIS_ThreadDesc,
    dev.DEV_Name,
    loc.LOC_Name,
    d.USE_Id,
    d.DIS_Date
  FROM projects p
  LEFT JOIN discussions d ON p.PRO_Id = d.PRO_Id
  LEFT JOIN comments c ON d.DIS_Id = c.DIS_Id
  LEFT JOIN developer dev ON p.DEV_Id=dev.DEV_Id
  LEFT JOIN locality loc ON p.LOC_Id=loc.LOC_Id
  WHERE p.PRO_Status=1 
   and d.DIS_Status=1 
   and c.COM_Status=2
  GROUP BY p.PRO_Id
) AS sub
ORDER BY commentCount LIMIT 3

请记住,您的 SELECT 列表和 GROUP BY 不匹配。这适用于 MySQL 但不符合 ANSI 标准。您应该在两个子句中使用相同的列表,或者对 GROUP BY 中未指定的列使用聚合函数。更多信息 here .

关于php - 如何在mysql中选择不同值的计数总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34448319/

相关文章:

MySQL Large Table Sharding to Smaller Table based on Unique ID

php - 如何在 FuelCMS 中包含特定 View 的 css 文件

php - 如何将 PHPMailer 导入到使用命名空间的类中?

php - 如何使用wpdb插入数据

php - 实现接口(interface)和自动加载类

mysql select column outside group by

C#-Mysql Insert-执行命令时遇到 fatal error

mysql - 限制 MySQL 中的不同值

mysql - 如何从列中获取唯一值,同时返回最新的非唯一值

ios - 从字符串iOS中删除常见字母