SQL:删除表和所有相关表中的所有数据

时间:2014-04-18 15:45:18

标签: sql postgresql

我有一张学生桌和一张桌子。分数,班级

我想删除与2012年之前完成学业的学生相关的所有数据 - 所以从学生表中delete from students where graduate year < 2012,但我如何从分数表中删除所有记录?我可以在删除之前对所有学生的ID进行选择,然后进行delete from scores where studentId in [],但我打赌有更好的方法。

它也没有解决我的课程问题,因为有些课程不再相关,因为它们不被任何学生带走,应该删除,有些仍然可以运行。

1 个答案:

答案 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)