Mysql实验:将所有平均分为75分以上的学生的各门课成绩在原来基础上增加10%
参考:https://blog.youkuaiyun.com/u012767761/article/details/84997962
主要分为两步:
1.筛选出平均分为75分以上的学生的学生学号
SELECT
SNO
FROM
SC
GROUP BY SC.SNO //按照学号分组
HAVING
AVG(GRADE) > 75;//筛选平均分为75分以上的学号
2.将满足条件学生的各门课成绩在原来基础上增加10%
update SC
set GRADE = GRADE*1.1
WHERE SNO IN (
//需要满足的条件(即第一步的代码)
)
但此时会出现一个错误
You can’t specify target table for update in FROM clause
不能先select出同一表中的某些值,再update这个表(在同一语句中)
解决方法将select出的结果再通过中间表select一遍
完整代码如下
update SC
set GRADE = GRADE*1.1
WHERE SNO IN (
SELECT a.SNO FROM(
SELECT
SNO
FROM
SC
GROUP BY SC.SNO
HAVING
AVG(GRADE) > 75
)a
)
修改前
修改后