Есть таблица с полями: user_id, friend_user_id.
В таблице от каждого пользователя добавляются записи о подписке. Мол user_id подписан на user_friend_id и если в таблице 2 записи перекрестной, то такие пользователи уже считаются друзьями.
Вопросы стоят такие:
1. Как из таблицы выбрать только перекрёстные записи, т.е. Юзер1 подписан на Юзер2 и Юзер2 подписан на Юзер1.
2. Как из таблицы выбрать только непересекающиеся записи. т.е. те записи, где первый пользователь подписан на другого, но другой НЕ подписан на первого.
Сразу скажу на счет второй части вопроса, я нашел ответ, но действительно ли правильное решение?
SELECT DISTINCT a.user_id
FROM user_friend a INNER JOIN user_friend b
ON a.friend_user_id = b.user_id
AND b.friend_user_id <> a.user_id
WHERE a.user_id = ?