首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有办法避免在MySQL中多次写入内联视图?

是否有办法避免在MySQL中多次写入内联视图?
EN

Stack Overflow用户
提问于 2013-09-21 02:45:50
回答 2查看 443关注 0票数 1

考虑一个学生表和一个分数表。成绩表列出了学生参加的所有课程的成绩。我想找到平均分数最高的学生。

我会用CTE来解决这个问题,但是MySQL似乎没有提供CTE。我想写一个查询,以找到有最大avg的学生。等级,也避免编写查询,这将得到avg。所有学生的成绩,不止一次。

一个不起作用的查询如下(这可能会让我更清楚地知道我想要实现什么):

代码语言:javascript
复制
select temp.st_name 
from (select st1.student_name st_name, AVG(grade) avg_grade from Student st1, Grades grd1 where st1.student_id = grd1 .student_id group by st1.student_id,  st1.sudent_name) temp 
where temp.avg_grade = (select MAX(temp.avg_grade) from temp)

上面的查询给出了错误:表临时不存在。

还有其他方法可以找到那个有最大avg的学生吗?等级,避免写两次内联视图声明?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-21 02:51:06

不,你不能。你的选项是复制/粘贴坏小子到另一个子查询中,或者创建一个实际的视图来进行查询。

票数 0
EN

Stack Overflow用户

发布于 2013-09-21 02:54:38

我相信你可以使用有限制的订单,但我从来没有写过任何MYSQL,所以我可能错了;)

代码语言:javascript
复制
SELECT
    st1.student_name st_name,
    AVG(grade) avg_grade
FROM Student st1, Grades grd1
WHERE st1.student_id = grd1 .student_id
GROUP BY 
    st1.student_id,
    st1.sudent_name
ORDER BY avg_grade DESC
LIMIT 1;

注意:我没有更改您的初始语句,但是您应该使用来自tbl1,tbl2的联接语法

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

https://stackoverflow.com/questions/18928373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档