我有这样的表(通过外键互连):

学生:
    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';

10-07 15:54