mysql 如何將女學(xué)生中低于總平均成績(jī)的成績(jī)提高5%?
問(wèn)題描述
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)如上, 我寫(xiě)了一個(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)上也沒(méi)找到解決的辦法, 看了幾個(gè)博客說(shuō)是要使用中間表, 但是還是寫(xiě)不出來(lái), 那么正確的sql是怎樣的呢? 望告知
問(wèn)題解答
回答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)該是按課程分類(lèi),比如語(yǔ)文的平均分是80,那么語(yǔ)文低于80分的女生的分?jǐn)?shù),就要增加5%,然后每門(mén)課都按這樣的邏輯進(jìn)行
我的理解對(duì)嘛?對(duì)的話,我就敲代碼了。
相關(guān)文章:
1. windows誤人子弟啊2. mysql優(yōu)化 - MySQL如何為配置表建立索引?3. 實(shí)現(xiàn)bing搜索工具urlAPI提交4. 關(guān)于mysql聯(lián)合查詢一對(duì)多的顯示結(jié)果問(wèn)題5. 數(shù)據(jù)庫(kù) - Mysql的存儲(chǔ)過(guò)程真的是個(gè)坑!求助下面的存儲(chǔ)過(guò)程哪里錯(cuò)啦,實(shí)在是找不到哪里的問(wèn)題了。6. 我在網(wǎng)址中輸入localhost/abc.php顯示的是not found是為什么呢?7. 如何用筆記本上的apache做微信開(kāi)發(fā)的服務(wù)器8. python - linux怎么在每天的凌晨2點(diǎn)執(zhí)行一次這個(gè)log.py文件9. MySQL主鍵沖突時(shí)的更新操作和替換操作在功能上有什么差別(如圖)10. 冒昧問(wèn)一下,我這php代碼哪里出錯(cuò)了???
