mysql 如何将女学生中低于总平均成绩的成绩提高5%?
问题描述
mysql> desc SC ;FieldTypeNullKeyDefaultExtraSIDint(11)NOPRINULL CIDint(11)NOPRINULL GRADEint(11)YES NULL3 rows in set (0.00 sec)
mysql> desc S ;FieldTypeNullKeyDefaultExtraSIDint(11)NOPRINULL SNAMEvarchar(20)YES NULL AGEint(11)YES NULL SEXint(11)YES NULL表结构如上, 我写了一个sql:
update SC set GRADE = (GRADE+GRADE*0.05) where GRADE < (select AVG(GRADE) from SC x) and SID in (select SID from S where SEX = 1) ;
但是报错:
ERROR 1093 (HY000): You can’t specify target table ’SC’ for update in FROM clause
我到mysql的官网上也没找到解决的办法, 看了几个博客说是要使用中间表, 但是还是写不出来, 那么正确的sql是怎样的呢? 望告知
问题解答
回答1:begindeclare n_avg number;select avg(grade) into n_avg from SC;update SC set GRADE = GRADE*1.05 where grade<n_avg and sid in (select SID from S where SEX=1);end回答2:
select @avgs:=(select avg(grade) from SC);update SC set GRADE = (GRADE+GRADE*0.05) where GRADE < @avgs and SID in (select SID from S where SEX = 1) ;回答3:
有SC表里CID表示课程ID,所以,应该是按课程分类,比如语文的平均分是80,那么语文低于80分的女生的分数,就要增加5%,然后每门课都按这样的逻辑进行
我的理解对嘛?对的话,我就敲代码了。
相关文章:
1. 修改mysql配置文件的默认字符集重启后依然不生效2. angular.js - 关于指令link 中的创建变量问题3. mongodb - windows7下mongod无法正常启动4. java - 腾讯云mysql数据库可以插入数据,但是不能查询数据,求解答5. javascript - 豆瓣的这个自适应是怎么做的?6. 作为新手,未定义索引username,求解,谢谢7. mysql - 请教一个Java做数据库缓存的问题8. javascript - ueditor引入报错问题9. php - 类似Apple官网顶部3级导航该如何设计数据库?10. java - 使用retrofit2下载歌词文件后,进行保存时报空间不足的错误

网公网安备