mysql 如何將女學(xué)生中低于總平均成績的成績提高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表結(jié)構(gòu)如上, 我寫了一個(gè)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) ;
但是報(bào)錯(cuò):
ERROR 1093 (HY000): You can’t specify target table ’SC’ for update in FROM clause
我到mysql的官網(wǎng)上也沒找到解決的辦法, 看了幾個(gè)博客說是要使用中間表, 但是還是寫不出來, 那么正確的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,所以,應(yīng)該是按課程分類,比如語文的平均分是80,那么語文低于80分的女生的分?jǐn)?shù),就要增加5%,然后每門課都按這樣的邏輯進(jìn)行
我的理解對嘛?對的話,我就敲代碼了。
相關(guān)文章:
1. angular.js - angularjs的自定義過濾器如何給文字加顏色?2. angular.js - angular內(nèi)容過長展開收起效果3. 關(guān)于docker下的nginx壓力測試4. docker鏡像push報(bào)錯(cuò)5. 關(guān)于nginx location配置的問題,root到底是什么6. linux - openSUSE 上,如何使用 QQ?7. 并發(fā)模型 - python將進(jìn)程池放在裝飾器里為什么不生效也沒報(bào)錯(cuò)8. 大家好,請問在python腳本中怎么用virtualenv激活指定的環(huán)境?9. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?10. linux - 升級到Python3.6后GDB無法正常運(yùn)行?
