2014-04-18 33 views
-1

我有一个学生桌&成绩,类SQL:删除表中的所有数据以及所有相关的表

我想删除有关谁在2012年以前完成学业的学生的所有数据 - 因此从学生表其delete from students where graduate year < 2012但我如何删除分数表中的所有记录?我可以在删除它们之前选择所有学生的ID,然后做一个delete from scores where studentId in [],但我敢打赌有一个更好的办法。 此外,它并没有解决我与类的问题,因为有些类没有更多的相关性,因为他们不被任何学生采用,应该删除,有些仍然运行。

任何帮助,将不胜感激。

+2

定义外键'上删除cascade' –

回答

-1
DELETE FROM scores 
WHERE studentId IN (
    SELECT id 
    FROM students 
    WHERE graduate_year<2012 
) 

对于DELETE from classes...您需要提供一些额外的信息,但其基本结构是这样的:

DELETE FROM classes 
WHERE NOT EXISTS (SELECT some condition that states the class is still referenced and needed) 
相关问题