Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 计数函数在联接时返回错误的值_Mysql_Count_Group By - Fatal编程技术网

Mysql 计数函数在联接时返回错误的值

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

我正试图找到一个计数的行动完成连同公司的详细资料为公司谁拥有超过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_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,然后对其进行了不同的计数,结果很好,谢谢@哦,抓住你了!是的,那是有道理的。。。我假设这是一个独特的专栏:)