从基于GPA和ID的多个表中删除

时间:2015-02-10 04:50:33

标签: mysql

我不明白为什么这不起作用我一直试图解决这个问题。我试图从GPA小于0.5的注册表和学生表中删除学生。

    DELETE e, s FROM Enrollemnt e JOIN  Student s ON s.StudentID = e.StudentID
WHERE s.GPA < 0.5 
AND s.StudentID = e.StudentID;  

2 个答案:

答案 0 :(得分:1)

谓词s.StudentID = e.StudentIDWHERE子句中是多余的;同一谓词已在ON子句中表达。 (我认为优化器可以接受;对于人类读者来说有点混乱,为什么会表达两次。)

除了那种奇怪之外,声明应该&#34;工作&#34;。一个可能的问题是外键限制;从表中删除行的顺序可能会导致违反外键约束。

我怀疑问题是Enrollment表的拼写,看起来表名拼写错误,错误将是&#34;未知表&#34;。

答案 1 :(得分:0)

这是我想出的答案......

DELETE Enrollment, Student FROM Enrollment INNER JOIN Student 
WHERE Enrollment.StudentID=Student.StudentID
AND Student.GPA < 0.5;