首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL Count返回的行数超出其应有的范围

问MySQL Count返回的行数超出其应有的范围
EN

Stack Overflow用户
提问于 2014-11-14 21:44:26
回答 1查看 119关注 0票数 0

我正在尝试计算给定查询的行数。但是count返回的行数比它应该返回的行多。这是怎么回事?

此查询仅返回一行。

代码语言:javascript
复制
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行。

代码语言:javascript
复制
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`;
EN

回答 1

Stack Overflow用户

发布于 2014-11-14 21:56:55

当您选择计数(*)时,它在group by之前计数。您可能可以(不幸的是,我的领域是SQL Server,并且我没有要测试的mySQL实例)通过使用over()函数来解决这个问题。

例如:

代码语言:javascript
复制
select count(*) over (partition by `opportunities`.`id`)

编辑:实际上在mySQL中看起来不像是可用的,我的错。把整个事情包装在一个新的select语句中怎么样?这不是最优雅的解决方案,但会给你你想要的图形。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26931394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档