目前我有以下数据库:
表1:Customer_Stores
unique_id
page_address
date_added
guide_summary
user_name
cover_photo
guide_title
表2:Customer_Stories_Likes
story_id
likex
'喜欢'第二个表中的列包含1或0来指示用户是否喜欢帖子。
我想要做的是将这两张桌子与' post_id
'一起加入并计算所有喜欢的'对于基于post_id
的所有帖子,并按照每个帖子有多少喜欢订购这些帖子。这可能只有一个声明吗?或者最好使用Count(*)
来首先确定每个帖子有多少喜欢?
答案 0 :(得分:2)
是的,这是可能的,但您不需要内部联接,因为您实际上并不需要使用posts表来执行此操作。
SELECT post_id, count(like) AS post_likes
FROM likes
WHERE like = 1
GROUP BY post_id
ORDER BY post_likes DESC
如果您还需要posts表中的其他信息,您可以将其加入到获得类似计数的子查询中。
SELECT posts.*, like_count
FROM
posts LEFT JOIN
(SELECT post_id, count(like) AS like_count
FROM likes
WHERE like = 1
GROUP BY post_id) AS post_likes
ON posts.post_id = post_likes.post_id
ORDER BY like_count DESC
我使用LEFT JOIN
而不是INNER JOIN
,如果您不想包含没有喜欢的帖子,则可以使用INNER JOIN
。