[英]MySql: how to make subquery and count all rows where id is the same in two tables
如何进行查询,而不是全部返回特定ID的值。
SELECT content.id, count(case likes.type when 'p' then 1 else null end) as p
FROM content
JOIN likes on likes.content_id = content.id
此代码返回:
ID p
1 18
但我想要它:
ID p
1 12
2 4
3 2
添加group by
SELECT content.id,
sum(likes.type = 'p') as p
FROM content
JOIN likes on likes.content_id = content.id
GROUP BY content.id
然后将聚合函数(即count()
)应用于组,而不是整个结果。
您的查询将在大多数数据库中失败。 问题是在select
未汇总content.id
,但是您正在使用聚合函数。
这是一个简单的问题要解决:
SELECT content.id, count(case likes.type when 'p' then 1 else null end) as p
FROM content
JOIN likes on likes.content_id = content.id
GROUP BY content.id;
然而,在一般情况下,你要小心, 总是包含在所有的非聚集列select
一个在group by
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.