从查询中排除数据集

Ива*_*вац 3 mysql database-design

我有2张桌子

  • EXAM( StudentID, SubjectID, SchoolYear, Period, Mark) 和
  • CANCELED_考试(StudentID, SubjectID, SchoolYear, Period)。

两个表的主键都是 ( StudentID, SubjectID, SchoolYear, Period)。

当学生想参加考试时,我们在EXAM表格中写一行。但是如果学生通过了考试但不满意,那么他想取消考试,我们需要在 table 中写一行CANCELED_EXAM

我的问题是:如何从 table 中选择未取消的考试EXAM

gbn*_*gbn 6

这是标准的 SQL

SELECT
   *
FROM
   EXAM E
WHERE
   NOT EXISTS (SELECT *
       FROM
          CANCELED_EXAM CE
       WHERE
          E.StudentID = CE.StudentID AND
          E.SubjectID = CE.SubjectID AND
          E.SchoolYear = CE.SchoolYear AND
          E.Period = CE.Period )
Run Code Online (Sandbox Code Playgroud)