@alex99505

Как оптимально получить симметричные данные в таблице?

Всем привет!
Допустим, есть таблица friends с полями id, user_id1, userd_id2, где указано кто с кем дружит.
Как можно наиболее быстро выполнить запрос на SQL языке на получение всех людей из списка, которые дружат между собой?

Например, есть такие данные
id user_id1 userd_id2
1 10 20
2 11 20
3 20 10

Нужно, чтобы в запросе вернуло только первую и третью строку
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Элементарно, заджойнте ту же самую таблицу саму на себя.
select *
from t as t1
join t as t2 on t1.user_id1 = t2.user_id2
                 AND t2.user_id1 = t1.user_id2
Ответ написан
Fragster
@Fragster
помогло? отметь решением!
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
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы