[英]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.