请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

表结构:

https://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回答

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 回复 有任何疑惑可以回复我~
  • 经验证,老师这语法不能在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 21:36:10
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信