我有这样的表(通过外键互连):
学生:
SNUM,SNAME,费用
学院:
FID,FNAME
课程:
CNAME,TIME,FID
报名:
SNUM,CNAME
需求:
将Kavya教授正在为其授课的学生的费用提高15%。
我尝试了以下查询,该查询不起作用
UPDATE STUDENT SET FEES=FEES*1.15 WHERE SNUM IN
(
SELECT DISTINCT S.SNUM
FROM STUDENT S, COURSE C, ENROLLED E, FACULTY F
WHERE S.SNUM = E.SNUM AND E.CNAME = C.CNAME
AND C.FID = F.FID
AND F.FNAME = 'KAVYA'
);
错误:您无法在FROM子句中指定目标表STUDENT进行更新。
请帮助我解决这个问题
最佳答案
在MySQL中,您无法更新表并在已记录here的子查询中从同一表中选择。您可以按以下方式将查询更改为联接而不是子查询,
UPDATE STUDENT S
JOIN ENROLLED E ON S.SNUM = E.SNUM
JOIN COURSE C ON E.CNAME = C.CNAME
JOIN FACULTY F ON C.FID = F.FID
SET FEES=FEES*1.15
WHERE F.FNAME = 'KAVYA';