与MySQL相交

时间:2018-08-21 21:01:29

标签: mysql

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 for MySQL的替代方法。我需要获得这两个查询之间的公共行。

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

尝试一下:

中选择A.friend_id

(从在其中user_id = 1的友谊中选择SELECT friend_id)A

加入

(从友谊所在的user_id = 2中选择friend_id)B在A.friend_id = B.friend_id上

答案 2 :(得分:0)

您是否尝试过此查询?

由于我们试图找到用户1和用户2之间的共同朋友, 通过从好友关系中选择friend_id,并且(user_id = 1或user_id = 2)给出了两个用户都拥有的朋友的列表。当使用friend_id分组并且count(friend_id)> 1时,我们将查询他们共有的朋友。

Name: John Age: 38
,Name: Mary Age: 33