我有两个表(post.id 是主键,在like.post_id中成为辅助键)
表"帖子"
id user_id image
1 10 abc.jpg
2 20 xyz.jpg
3 10 ajb.jpg
表"赞"
id user_id post_id likes
1 10 1 1
2 20 2 1
3 10 1 1
4 10 1 1
3 10 3 1
现在我想每当我通过user_id然后我想获得用户的所有帖子和帖子的喜欢数量
我尝试使用以下代码,但不起作用,
SELECT selfie_info.id,selfie_info.user_id,selfie_info.image, (SELECT COUNT(m.likes)FROM post_likes m WHERE m.user_id='10') as total_likes FROM selfie_info where user_id='10'
我该怎么做? 我想要如下结果(如果我通过 user_id=10)
user_id post_id likes
10 1 3
10 3 1
SELECT p.user_id, p.id AS post_id, COUNT(l.id) AS total_likes
FROM post p
LEFT JOIN likes l ON l.post_id =p.id
WHERE p.user_id=10 GROUP BY p.id;
您可以使用聚合:
select pl.post_id, count(*) as numlikes,
si.*
from selfie_info si join
post_likes pl
on si.user_id = pl.user_id
where si.user_id = 10
group by si.user_id, si.post_id
您可以在select
中使用si.*
,即使这是一个group by
查询,因为您是按表中的主键/唯一 id 聚合的。
您在表"like"中有所有必要的数据您可以从"喜欢"表中选择一个。
select user_id, post_id, sum(likes) as likes from like where user_id = 10;
您需要计算或汇总喜欢?根据您的需求,您可以求和(喜欢)或计数(*)喜欢