Пересекаются с MySQL

0
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. Мне нужно получить общую строку между этими двумя запросами.

  • 0
    Смотрите, например, JOIN.
Теги:

3 ответа

1
Лучший ответ

Вы можете использовать соединение для замены 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;
  • 0
    Работал отлично, однако мне пришлось изменить friend_id на f1.friend_id . Спасибо.
  • 0
    Да, извините, я пропустил это из своего ответа. Я обновил это.
0

Вы пробовали этот запрос?

Поскольку мы пытаемся найти общих друзей между пользователем 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
0

Попробуй это:

Выберите 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню