联表查询查找某列属性个数结果只返回一行的问题——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