SELECT friend_id FROM friendships WHERE user_id = 1;
Returns:
+-----------+
| friend_id |
+-----------+
| 2 |
| 3 |
+-----------+
SELECT friend_id FROM friendships WHERE user_id = 2;
Returns:
+-----------+
| friend_id |
+-----------+
| 1 |
| 3 |
| 6 |
+-----------+
Я пытаюсь найти альтернативу INTERSECT для MySQL. Мне нужно получить общую строку между этими двумя запросами.
Вы можете использовать соединение для замены INTERSECT
SELECT DISTINCT f1.friend_id
FROM friendships f1
JOIN friendships f2 ON f1.friend_id = f2.friend_id
WHERE f1.user_id = 1 and f2.user_id = 2;
friend_id
на f1.friend_id
. Спасибо.
Вы пробовали этот запрос?
Поскольку мы пытаемся найти общих друзей между пользователем 1 и пользователем 2, выбирая friend_id из дружбы и (user_id = 1 или user_id = 2), дает нам список друзей, которые есть у пользователей. Когда группа by friend_id и имеет счет (friend_id)> 1, мы запрашиваем друзей, которые у них есть общего.
SELECT friend_id FROM friendships
WHERE user_id = 1 or user_id=2
GROUP BY friend_id
Having count(friend_id)>1
Попробуй это:
Выберите A.friend_id из
(SELECT friend_id FROM friendships WHERE user_id = 1) A
присоединиться
(SELECT friend_id FROM friendships WHERE user_id = 2) B на A.friend_id = B.friend_id