首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将平均评等连接到MySQL选择的所有行的末尾

将平均评等连接到MySQL选择的所有行的末尾
EN

Stack Overflow用户
提问于 2013-09-04 18:43:18
回答 1查看 125关注 0票数 1

对于每一个bd_comments.commentid (意味着唯一的评论),我需要加入所有其他用户提供的评论行末尾的平均评分。

表注释率保存每个用户所做的所有速率,公共密钥是comment_id。在注释率中,字段名为comment_id,而在bd_comments中,则称为commentid

我可以使sql选择average并将其连接到单个行,但不能让它对所有行都这样做。下面的示例只返回指定comment_id的一个结果。

代码语言:javascript
运行
AI代码解释
复制
select commentrate.comment_id, floor(avg(commentrate.rating)), 
bd_comments.comment, bd_comments.author_id from commentrate, bd_comments 
WHERE commentrate.comment_id= 1

此语句选择特定commentid的所有评等的平均值,并返回附加到我需要的其他字段的平均值,但只返回一行。有几个独特的commentid。我需要一个表,在评论行的末尾有一个评论平均评分,以形成一个最高评级的页面。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-04 19:21:07

您的模式(我猜是因为您没有提供一个)

代码语言:javascript
运行
AI代码解释
复制
CREATE TABLE bd_comments 
    (
     commentid int , 
     comment varchar(10),
     author_id int
    );

CREATE TABLE commentrate 
    (
     comment_id int , 
     rating int,
     author_id int
    );

INSERT INTO bd_comments
VALUES
(1, "comment 1", 100),
(2, "comment 2", 200),
(3, "comment 3", 300);

INSERT INTO commentrate
VALUES
(1, 3.5, 100),
(2, 4, 100),
(3, 5, 100),
(1, 2.5, 200),
(2, 1, 200);

以下是查询

代码语言:javascript
运行
AI代码解释
复制
SELECT cr.comment_id, floor(avg(cr.rating)) rating,c.comment, c.author_id
FROM commentrate cr, bd_comments c
WHERE cr.comment_id = c.commentid
GROUP BY cr.comment_id

输出

代码语言:javascript
运行
AI代码解释
复制
| COMMENT_ID | RATING |   COMMENT | AUTHOR_ID |
|------------|--------|-----------|-----------|
|          1 |      3 | comment 1 |       100 |
|          2 |      2 | comment 2 |       200 |
|          3 |      5 | comment 3 |       300 |

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18626899

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文