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. chrome - linux系统下如何通过java获取客户端ip和mac地址?2. java - Activity 进入后台再次传值?3. angular.js - ng-include 会缓存html吗?4. css - 手机app中rem的基准值计算错误5. javascript - sublime已经安装了babel插件和sublimelinter-jshint为什么还是显示es6语法错误?6. java - git项目迁移到SVN怎么实现的?哪位大神指点指点7. 前端 - 在webstrom上pull代码时出现错误?8. css如何实现图标和文字的“绝对对齐”呢?9. java - Spring boot项目 可以通过ip+port+contentPath就直接显示所有的接口地址和数据信息,这是为什么???10. css3的transform问题

网公网安备