我有这个问题要解决:如果两个学生 A 和 B 是朋友,并且 A 喜欢 B 但反之不喜欢,请删除 Likes 条目。
对于背景,Friend 表有两列,STU1 和 STU2。如果他们是朋友,那么会有一个条目显示 STU1、STU2 和 STU2、STU1。
在 Likes 表中,如果学生 A 喜欢学生 B,则会有 STU1、STU2 的条目,但如果学生 B 不喜欢学生 A,则不会有 STU2、STU1 的条目。
所以,这就是我尝试过的。问题是它仍然在 Likes 表中留下了两行应该不存在的行。关于如何解决这个问题的任何想法?
delete from Likes
where exists
(select F.STU1, F.STU2 from Friend F
where exists
(select L.STU1, L.STU2 from Likes L, Friend F where
F.STU1 = L.STU1 and F.STU2 = L.STU2)
)
and not exists
(select L.STU1, L.STU2 from Likes L, Friend F where
F.STU1 = L.STU2 and F.STU2 = L.STU1)