MySQL 查询返回错误的 COUNT 值

标签 mysql

在这里我分享了我的疑问。所有总计值都会给出错误的结果,因为非常大的数值不是所需的 COUNT 值。我的查询有什么问题?

           SELECT bd.business_id,
                  bd.business_name,
                  bd.business_address,
                  bd.created_at,
                  bd.updated_at AS extent_expiry_date,
                  bd.manager_id as user_id,
                  COUNT(m.manager_id) AS total_managers,
                  COUNT(a.agent_id) AS total_agents,
                  COUNT(c.customer_id) AS total_customers,
                  COUNT(t.task_id) AS total_tasks,
                  COUNT(t.order_id) AS total_orders
            FROM business_details bd
            LEFT JOIN managers m ON m.business_id = bd.business_id
            LEFT JOIN agents a ON a.business_id = bd.business_id
            LEFT JOIN customers c ON c.business_id = bd.business_id
            LEFT JOIN tasks t ON t.business_id = bd.business_id
            GROUP BY bd.business_id

最佳答案

由于您的问题中没有示例数据集,我的猜测是您多次获得相同的 manager_id、agent_id...,因为左连接使用不同的值来获取正确的计数

SELECT bd.business_id,
      bd.business_name,
      bd.business_address,
      bd.created_at,
      bd.updated_at AS extent_expiry_date,
      bd.manager_id as user_id,
      COUNT(distinct m.manager_id) AS total_managers,
      COUNT(distinct a.agent_id) AS total_agents,
      COUNT(distinct c.customer_id) AS total_customers,
      COUNT(distinct t.task_id) AS total_tasks,
      COUNT(distinct t.order_id) AS total_orders
FROM business_details bd
LEFT JOIN managers m ON m.business_id = bd.business_id
LEFT JOIN agents a ON a.business_id = bd.business_id
LEFT JOIN customers c ON c.business_id = bd.business_id
LEFT JOIN tasks t ON t.business_id = bd.business_id
GROUP BY bd.business_id

还包括分组依据中的所有非聚合列,因为根据新版本,大多数 RDBMS 拒绝这些类型的查询

GROUP BY 
bd.business_id,
bd.business_name,
bd.business_address,
bd.created_at,
bd.updated_at,
bd.manager_id

关于MySQL 查询返回错误的 COUNT 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48052077/

相关文章:

mysql - JPA2 Criteria API .as(String.class) 转换为 char(1) - 我该如何解决这个问题?

php - mySql - 使用逗号分隔值列表创建连接

mysql - REALBasic 和 MySQL

mysql - 多列索引对单列也有用吗?

mysql - 将文本文件内容插入到mysql的列中

php - 使用 Sphinx/MySQL 一次从两个表中获取数据有更好的方法吗?

php - 上传临时用的图片需要mysql数据库吗?

mysql - 如何基于EXPLAIN计划优化MySQL查询

php - 消息: Undefined variable in controller of codeigniter

mysql - 在 MySQL 中使用字符串的数字组件对字符串进行数字排序的首选方法是什么?