如何进行返回特定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
答案 0 :(得分:1)
添加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()
)将应用于组,而不是整个结果。
答案 1 :(得分:1)
您的查询在大多数数据库中都会失败。问题是content.id
中没有汇总select
,但您使用的是聚合函数。
这是一个很难解决的问题:
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
的{{1}}中包含所有非聚合列。