Mysql 计数函数在联接时返回错误的值
我正试图找到一个计数的行动完成连同公司的详细资料为公司谁拥有超过10个用户 我使用的代码是:Mysql 计数函数在联接时返回错误的值,mysql,count,group-by,Mysql,Count,Group By,我正试图找到一个计数的行动完成连同公司的详细资料为公司谁拥有超过10个用户 我使用的代码是: SELECT c.company_name, count(a.action) as actions, count(u.user_id) as users FROM companies c LEFT JOIN auditing a on c.id=a.company_id LEFT JOIN users u on c.id=u.company_i
SELECT
c.company_name,
count(a.action) as actions,
count(u.user_id) as users
FROM
companies c
LEFT JOIN
auditing a on c.id=a.company_id
LEFT JOIN
users u on c.id=u.company_id
GROUP BY
c.id
HAVING
count(u.user_id)>10
LIMIT
10
当我运行此命令时,它会显示错误的操作数
例如,对于表中返回的第一个公司:
Company 1,111026,111026
鉴于其应返回:
Company 1,5093,22
我需要返回所有公司的操作数和用户数-我如何才能做到这一点?尝试输入DISTINCT,这样就不会计算重复项
SELECT
c.company_name,
count(DISTINCT a.action) as actions,
count(DISTINCT u.user_id) as users
FROM
companies c
LEFT JOIN
auditing a on c.id=a.company_id
LEFT JOIN
users u on c.id=u.company_id
GROUP BY
c.id
HAVING
count(u.user_id)>10
LIMIT
10
DISTINCT对用户进行了处理,现在它正确返回22,但将其添加到操作中会返回结果1151,这是不正确的correct@bhttoan然后,您可能必须单独进行计数,因为用户和操作的连接会导致额外的结果。实际上,我们刚刚解决了问题-操作列是文本列,并且操作相同因此计数是“错误的”,所以我将列更改为只包含唯一值的id,然后对其进行了不同的计数,结果很好,谢谢@哦,抓住你了!是的,那是有道理的。。。我假设这是一个独特的专栏:)