2 回答

TA貢獻9條經驗 獲得超8個贊
你這個sc1.grade 給它命名別名了嗎,又沒有別名又沒有定義MySQL引擎語法上肯定不識別啊
你可以參考下這樣寫就可以了。MySQL 已經執行成功的,以下代碼可以直接復制你查詢實現下:
?create table sc(
?sno varchar(20) primary key not null,
?cno varchar(20),
?grade float(6,2) unsigned
?);?
?insert into sc values('a001','c01',88.5);
?insert into sc values('a002','c01',78.5);
?insert into sc values('a002','c01',78.5);
?insert into sc values('a003','c01',68.5);
?insert into sc values('a004','c01',58.5);
?insert into sc values('a005','c01',18.5);
?insert into sc values('a006','c02',18.5);
?insert into sc values('a007','c02',28.5);
?insert into sc values('a008','c02',38.5);
?insert into sc values('a009','c02',78.5);
?insert into sc values('a010','c03',78.5);
?insert into sc values('a011','c03',48.5);
?insert into sc values('a012','c03',49.5);
?insert into sc values('a013','c04',100);
?insert into sc values('a014','c04',90);
mysql> update sc set grade=(select sc1_avg_grade from((select avg(grade) as sc1_
avg_grade from sc where cno='c01' group by cno) as sc1) ) where cno='c01';
Query OK, 5 rows affected (0.04 sec)
Rows matched: 5 ?Changed: 5 ?Warnings: 0
采納的話別忘記給分喲,親
?

TA貢獻9條經驗 獲得超8個贊
簡單理解為avg(grade) as sc1_avg_grade,為平均成績avg(grade)命名別名sc1_avg_grade,
同時(select avg(grade) as sc1_avg_grade from sc where cno='c01' group by cno) as sc1 為這個結果集的表也命名個別名sc1,
查詢這個別名即可,對這個sc1表進行操作即可,就不會沖突
添加回答
舉報