この問題を解決する必要があります: 2 人の生徒 A と B が友達で、A が B を好きで、その逆ではない場合、Likes エントリを削除します。
背景として、Friend テーブルには STU1 と STU2 の 2 つの列があります。それらが友人である場合、STU1、STU2 AND STU2、STU1 を示すエントリがあります。
Likes テーブルでは、学生 A が学生 B を気に入っている場合、STU1、STU2 のエントリがありますが、学生 B が学生 A を気に入っていない場合、STU2、STU1 のエントリはありません。
だから、ここに私が試したことがあります。問題は、Likes テーブルに 2 つの行が残っていることです。これを解決する方法についてのアイデアはありますか?
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)