Как оптимально получить симметричные данные в таблице?
Всем привет!
Допустим, есть таблица friends с полями id, user_id1, userd_id2, где указано кто с кем дружит.
Как можно наиболее быстро выполнить запрос на SQL языке на получение всех людей из списка, которые дружат между собой?
Например, есть такие данные
id user_id1 userd_id2
1 10 20
2 11 20
3 20 10
Нужно, чтобы в запросе вернуло только первую и третью строку
select user_id1, user_id2 from (
Select
user_id1, user_id2, 1 as flag
union all
Select
user_id2, user_id1, -1
) as t
group by user_id1, user_id2
having sum(flag) = 0