请问老师,update语句能和group by连用吗?或者这道面试题怎么做?

来源:1-1 【良好的开端】课程序言

他门说这就是人生

2020-03-28

表结构:

http://img1.sycdn.imooc.com/szimg/5e7f3a5a096133cc10650984.jpg

请问老师一个sql:

把"SC"表中“叶平”老师教的课的成绩都更改为此课程的平均成绩。

这是我的sql:

update sc
inner join course c
on sc.cid=c.cid
inner join teacher t
on t.tid=c.tid
set sc.score=avg(sc.score)
where t.tname='叶平'

但语法不能通过,因为没有group by子句,但我不知道要group by哪些字段,语法才能通过,或者您直接说这道题怎么实现呢?

写回答

1回答

sqlercn

2020-03-28

update c

set c.score=d.avg_score

from course a 

join teacher b on a.t#=b.t#

join sc c on c.c#=b.c#

join (

select c#,avg(score) avg_score

from sc

group by c#

) d on d.c#=c.c#

where b.tname='叶平'


0
1
他门说这就是人生
经验证,老师这语法不能在MySQL上使用,但或许可以在sql server上使用,于是我改了一下: update course c inner join teacher t on c.tid=t.tid inner join sc on c.cid=sc.cid inner join ( select cid,avg(score) avg_score from sc group by cid ) a on a.cid=sc.cid set sc.score=a.avg_score where t.tname='和平' 谢谢老师!
2020-03-28
共1条回复

零基础入门 详解企业主流数据库MySQL8.0

掌握SQL优化与慢查询优化,具备独当一面的能力

1641 学习 · 485 问题

查看课程