删除表B中不存在表B引用的表A记录,然后删除表C

时间:2019-02-28 17:04:27

标签: mysql

我正在使用一个巨大的MySQL数据库,其中包含3个表,分别为Student,Tutor和Subject 有Tutor_id的学生,有Subject_id的导师

“学生”中有一些“老师ID”在“老师”表中不存在。为此,我执行了以下操作:

DELETE FROM Student WHERE NOT EXISTS(SELECT NULL FROM Tutor WHERE Tutor.id = Tutor_id)

现在还有另一种情况,“导师”中有一些Subject_id不在“主题”表中。

例如: 学生桌:

Id  Tutor_id
1      2
2      1
3      3

家教桌:

Id   Subject_id
1      3
2      4  
4      1

主题表:

Id    Name
1      Maths
2      Science
4      English

我提到的DELETE查询以id的形式删除Student表中的第3条记录:Tutor中不存在3,但是如何删除Student表中的记录2 因为它属于不包含主题的Tutor_id 1(因为ID 3的主题不存在)。 如何使用这3个表循环查询以删除记录?

2 个答案:

答案 0 :(得分:2)

您可以通过查找没有有效学科的导师来删除学生

所以运行

DELETE FROM Student WHERE Tutor_id IN 
  (SELECT id from Tutor WHERE NOT EXISTS
    (SELECT NULL FROM Subject WHERE Subject.id = Subject_id))

从学生中删除之前

答案 1 :(得分:0)

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)