给出:
表friends
-用户及其朋友列表:
id | user | friend |
----+-------+--------+
1 | John | Pete |
2 | John | Rock |
3 | Pete | Steve |
4 | Pete | Liz |
5 | Pete | Rock |
6 | Bob | Pete |
问题:
我需要一个查询,该查询将仅提取 John 的朋友 Pete 的那些朋友,这些朋友是 John 的朋友(即,约翰和皮特)。结果,仅应返回行ID #5
,因为John和Pete只有一个共同的朋友- Rock 。
我的尝试:
这不会产生结果:
select T1.* FROM friends T1
INNER JOIN friends T2 ON T2.user=T1.friend
WHERE T1.user='John' AND T1.friend_id='Pete' AND T2.friend=T1.friend
答案 0 :(得分:2)
SELECT t1.*
FROM friends AS t1
JOIN friends AS t2 ON t1.friend = t2.friend
WHERE t1.user = 'Pete' AND t2.user = 'John'
由于您想要共同的朋友,因此加入条件应指定两个用户的朋友相同。
答案 1 :(得分:0)
您需要获取 John 的朋友和 Pete 的朋友,然后将结果与“朋友”列关联。
SELECT
f1.*
FROM
friends f1,
friends f2
WHERE
f1.user = 'John' AND f2.user = 'Pete' AND f1.friend=f2.friend