mysql 不支持 update 子查询更新

updateresultrinnerjoin(selectre.studentnofromresultrewherere.SubjectId=(selectsu.subj... update result r inner join(select re.studentno from result re where re.SubjectId=(
select su.subjectno from subject su where su.subjectname='深入.NET平台和C#编程'
)
and examdate=(
select max(examdate) from result where subjectid=(
select subjectno from subject where subjectname='深入.NET平台和C#编程'
)

) and studentresult>80) b on r.StudentNo=b.StudentNo
set r.studentresult=r.studentresult+2
where studentresult<=100;
高手帮忙看看 查询更新不辽 在帮忙看看这道题怎么做 mysql数据库
检查“Java Logic”课程最近一次考试。如果有 80分以上的成绩,则每人提2分;否则,每人提5分。最终的成绩不得大于100分
第一步:采用EXISTS检测是否有人考试成绩达到80分以上
第二步:如果成绩有80分以上的,UPDATE语句为参加本次考试的每名学生加2分;否则加5分
展开
 我来答
jack_wang0823
2017-03-27 · TA获得超过2957个赞
知道大有可为答主
回答量:4143
采纳率:87%
帮助的人:1441万
展开全部

update 时,更新的表不能在set和where中用于子查询;

update 时,可以对多个表进行更新(sqlserver不行);

你这个问题 可以使用3元计算的方法来解决 

没超过100分的 低于80 加5 小于等于98  +2  否则+1

update result set  studentresult =IF(studentresult<80,studentresult+2,
if(studentresult<=98,studentresult+2,studentresult+1))  where studentresult<100
and  subjectname='深入.NET平台和C#编程'

代码结果测试了

注意 result: 表名  studentresult :字段名  subjectname:科目名

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仁科信息
2024-07-24 广告
Oracle EBS运维是确保企业资源规划系统稳定、高效运行的关键环节。它涵盖了系统监控、性能优化、故障排查与恢复等多方面内容。通过持续的监控和数据分析,运维团队能够及时发现并解决潜在问题,保障系统的稳定性和安全性。同时,他们还需要与业务部... 点击进入详情页
本回答由仁科信息提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式