好的,这是我遇到的问题。有两个表用于处理博客评论和这些评论的评级。每次登录用户对帖子进行评分时,它都会在“commentrate”表中插入一个新行。'commentrate' 有 4 个字段。设置为 auto_increment、author_id、comment_id(已评级评论的 ID 号)的 ID,以及 1 到 5 级的评级本身。
实际评论表有一个commentid 字段,该字段将匹配commentrate 表中的comment_id。
我需要的是一个 Mysql 查询,它将使用其commentid 获取博客评论表中的每条评论,并将其与具有相同comment_id 的所有评级的平均值相匹配。
这样做的目的是建立一个评价最高的帖子页面。
我有一个查询,如果您指定comment_id,它将返回一个包含comment_id 和平均评分的结果集。但是,我无法使此查询适用于博客评论表中的每个评论 ID。该查询是:
SELECT commentrate.comment_id, AVG(commentrate.rating) from commentrate WHERE commentrate.comment_id=35
我尝试使用子查询和连接来实现这一点,但它不起作用或只会返回一行或会给我一条错误消息。我尝试过的查询将在下面发布。任何帮助,将不胜感激。几天来我一直徒劳地想弄清楚这一点。谢谢你。
SELECT bd_comments.commentid, bd_comments.comment FROM bd_comments WHERE bd_comments.commentid = ALL (SELECT commentrate.comment_id, floor(AVG(commentrate.rating)) from commentrate WHERE commentrate.comment_id=bd_comments.commentid)
错误:#1241 - 操作数应包含 1 列
SELECT bd_comments.commentid, bd_comments.comment FROM bd_comments WHERE bd_comments.commentid = ALL (SELECT commentrate.comment_id, floor(AVG(commentrate.rating)) from commentrate WHERE commentrate.comment_id=bd_comments.commentid)
错误:#1241 - 操作数应包含 1 列