如何查询指定帖子的评论及对应评论者用户名?
解决通过帖子ID获取评论及评论者用户名的SQL问题
嘿,我明白你的问题啦!你之前的查询里,错误地把users表和posts表做了关联,但实际上评论的发布者信息存在comments.user_id里,得把comments表和users表关联起来才能拿到评论者的用户名。
正确的SQL查询语句
如果你只需要获取目标帖子的所有评论内容,以及对应的评论者用户名,最简单高效的写法是:
SELECT c.body AS comment_body, u.name AS commenter_name FROM comments c INNER JOIN users u ON c.user_id = u.id WHERE c.post_id = ($1);
若需同时获取帖子本身的内容
如果你的需求还包含展示帖子正文,那可以保留和posts表的关联,调整后的语句如下:
SELECT p.body AS post_body, c.body AS comment_body, u.name AS commenter_name FROM posts p INNER JOIN comments c ON p.id = c.post_id INNER JOIN users u ON c.user_id = u.id WHERE p.id = ($1);
原查询失效的原因
你之前的查询把users和posts通过u.id = p.user_id关联,这其实拿到的是帖子发布者的信息,而非评论发布者的。我们需要的是将users和comments通过c.user_id = u.id关联,这样才能匹配到每条评论对应的发布者用户名。
内容的提问来源于stack exchange,提问作者Sallam Mhamad El-Tanna
相关产品推荐
相关产品推荐

