联表查询查找聚合函数只返回一列

联表查询查找某列属性个数结果只返回一行的问题——GROUP BY 的使用

history表

查找每个小说的观看数和订阅数(以is_subscription来区分)

正确的写法:

SELECT

n.id,

n.novel_name,

COUNT(h.is_subscription) AS viewers_count,

COUNT(h.is_subscription=1 OR NULL ) AS subscriptions_count

FROM history h,novel n

WHERE h.novel_id=n.id

GROUP BY n.id

ORDER BY viewers_count DESC

结果:

如果没有写GROUP BY来进行分组,结果只有一条

这是因为如果不分组,count的属性就只有一行,就算用“=”连接了两张表,也不会因为novel表的id有多个而进行分组,而是理解为:查出所有id的观看总数目;novel表查出3行数据,history查出1行数据,结果一拼接,当然只剩一行数据了。

转载自:https://blog.csdn.net/weixin_43676173/article/details/89558900

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容