MySQL Count返回比它应该更多的行

时间:2014-11-14 13:44:26

标签: mysql count rows

我正在尝试计算给定查询的行数。但是count会返回比应该更多的行。发生了什么事?

此查询仅返回1行。

select * 
from `opportunities` 
inner join `companies` on `opportunities`.`company_id` = `companies`.`id` 
left join `opportunityTags` on `opportunities`.`id` = `opportunityTags`.`opportunity_id` 
where `opportunities`.`isPublished` = '1' and `opportunities`.`Company_id` = '1'
group by `opportunities`.`id` ;

此查询返回有3行。

select count(*) as aggregate 
from `opportunities` 
inner join `companies` on `opportunities`.`company_id` = `companies`.`id` 
left join `opportunityTags` on `opportunities`.`id` = `opportunityTags`.`opportunity_id` 
where `opportunities`.`isPublished` = '1' and `opportunities`.`Company_id` = '1' 
group by `opportunities`.`id`;

1 个答案:

答案 0 :(得分:0)

当你选择count(*)时,它会在group by之前计算。您可能(不幸的是我的领域是SQL Server,我没有要测试的mySQL实例)通过使用over()函数修复此问题。

例如:

select count(*) over (partition by `opportunities`.`id`)

编辑:实际上看起来在mySQL中看起来不是这样,我的不好。如何将整个事物包装在新的select语句中?这不是最优雅的解决方案,但会为您提供您追求的数字。