mysql> desc SC ; | |||||
---|---|---|---|---|---|
Field | Type | Null | Key | Default | Extra |
SID | int(11) | NO | PRI | NULL | |
CID | int(11) | NO | PRI | NULL | |
GRADE | int(11) | YES | NULL |
3 rows in set (0.00 sec)
mysql> desc S ; | |||||
---|---|---|---|---|---|
Field | Type | Null | Key | Default | Extra |
SID | int(11) | NO | PRI | NULL | |
SNAME | varchar(20) | YES | NULL | ||
AGE | int(11) | YES | NULL | ||
SEX | int(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是怎样的呢? 望告知
PHP中文网2017-04-17 15:41:31
SC テーブルの CID はコース ID を表すため、コースごとに分類する必要があります。たとえば、中国語の平均スコアが 80 点の場合、中国語のスコアが 80 未満の女子のスコアは 5 加算されます。 % の場合、各コースは次のロジックに従います
私の理解は正しいでしょうか?正しければ、コードを入力します。