我正在使用一个巨大的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个表循环查询以删除记录?
答案 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)