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. linux - python 抓取公众号文章遇到验证问题2. angular.js - angular中的a标签不起作用3. javascript - 微信公号里采用七牛上传视频部分手机不能选择文件4. docker - 各位电脑上有多少个容器啊?容器一多,自己都搞混了,咋办呢?5. docker 17.03 怎么配置 registry mirror ?6. 关docker hub上有些镜像的tag被标记““This image has vulnerabilities””7. MySQL 如何从 datetime 类型的字段选择 date8. javascript - 获取标签中的字符串9. python - 怎样在linux下开发flask web应用时查看代码出错(traceback)的地方。10. sublime-text - sublime text 3中编译python(sublimeREPL),如何仅运行单行/选定部分

网公网安备