Ниже также рассматриваются ситуации, когда UserA и UserB равны между двумя строками, но UserAA и UserBB переключаются и наоборот.Ваш вопрос немного неясен о том, что именно является дубликатом.Надеюсь, это, по крайней мере, направит вас в правильном направлении.
Сначала я бы превратил это в оператор SELECT
и убедился бы, что он возвращает строки, которые, по вашему мнению, должны быть удалены, и только тестроки.
DELETE T1
FROM
My_Table T1
INNER JOIN My_Table T2 ON
(
T2.UserA = T1.UserA AND
T2.UserB = T1.UserB AND
T2.UserAA = T1.UserBB AND
T2.UserBB = T1.UserAA AND
T2.UserAA < T2.UserBB
) OR
(
T2.UserA = T1.UserB AND
T2.UserB = T1.UserA AND
T2.UserAA = T1.UserAA AND
T2.UserBB = T1.UserBB AND
T2.UserA < T2.UserB
) OR
(
T2.UserA = T1.UserB AND
T2.UserB = T1.UserA AND
T2.UserAA = T1.UserBB AND
T2.UserBB = T1.UserAA AND
T2.UserA < T2.UserB
)