Sin*_*nan 6 mysql sql database
我有多个表
post
id Name
1 post-name1
2 post-name2
user
id username
1 user1
2 user2
post_user
post_id user_id
1 1
2 1
post_comments
post_id comment_id
1 1
1 2
1 3
Run Code Online (Sandbox Code Playgroud)
我正在使用这样的查询:
SELECT post.id, post.title, user.id AS uid, username
FROM `post`
LEFT JOIN post_user ON post.id = post_user.post_id
LEFT JOIN user ON user.id = post_user.user_id
ORDER BY post_date DESC
Run Code Online (Sandbox Code Playgroud)
它按预期工作.但是,我想获得每个帖子的评论数量.那么如何修改此查询以便我可以获得评论的数量.
有任何想法吗?
dcp*_*dcp 19
SELECT post.id, post.title, user.id AS uid, username, COALESCE(x.cnt,0) AS comment_count
FROM `post`
LEFT JOIN post_user ON post.id = post_user.post_id
LEFT JOIN user ON user.id = post_user.user_id
LEFT OUTER JOIN (SELECT post_id, count(*) cnt FROM post_comments GROUP BY post_id) x ON post.id = x.post_id
ORDER BY post_date DESC
Run Code Online (Sandbox Code Playgroud)
编辑:如果没有任何评论,使其成为外部联接
EDIT2:将IsNull更改为Coalesce