在 SQL 中计算联接

  • 本文关键字:计算 SQL php mysql sql
  • 更新时间 :
  • 英文 :


我有两个表(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;

您需要计算或汇总喜欢?根据您的需求,您可以求和(喜欢)或计数(*)喜欢

最新更新