我有一张学生桌和一张桌子。分数,班级
我想删除与2012年之前完成学业的学生相关的所有数据 - 所以从学生表中delete from students where graduate year < 2012
,但我如何从分数表中删除所有记录?我可以在删除之前对所有学生的ID进行选择,然后进行delete from scores where studentId in []
,但我打赌有更好的方法。
它也没有解决我的课程问题,因为有些课程不再相关,因为它们不被任何学生带走,应该删除,有些仍然可以运行。
答案 0 :(得分:-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)