你可以在内连接中使用Count(*)吗?

时间:2017-01-26 21:47:12

标签: mysql

目前我有以下数据库:

表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(*)来首先确定每个帖子有多少喜欢?

1 个答案:

答案 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