我有一个包含几个用户ID及其各自朋友ID的表格,我想看看谁有共同的朋友。
例如,1是Roger的ID,2是Matt的id。
表朋友 场/值:
ID, FRIEND_ID, FRIEND_NAME
1, 34, DAMON
1, 17, RICHARD
1, 56, DANIEL
1, 65, CHARLIE
2, 15, PRISCILA
2, 17, RICHARD
2, 45, JOHN
2, 56, DANIEL
我想创建一个ID为1和2的选择,它将返回共享FRIEND_ID的行(意味着Roger和Matt的朋友有共同点),在这种情况下,它会返回带有friend_id的cols理查德和丹尼尔,最好不要重复。
答案 0 :(得分:4)
这应该有效,
Select f1.FRIEND_ID,f1.FRIEND_NAME from
FRIENDS f1,FRIENDS f2 where f1.FRIEND_ID =f2.FRIEND_ID and
f1.id=1 and f2.id=2
这是样本: http://sqlfiddle.com/#!2/c9f36/1/0
如果你想让所有有共同朋友的人都试试这个
Select f1.FRIEND_ID,f1.FRIEND_NAME,f1.id 'first person',f2.id as 'second person' from
FRIENDS f1,FRIENDS f2 where f1.FRIEND_ID =f2.FRIEND_ID and
f1.id<>f2.id and f1.id<f2.id
这将返回两个人每行有相同的朋友:http://sqlfiddle.com/#!2/c9f36/2/0
答案 1 :(得分:3)
SELECT friend_id, friend_name
FROM friends
WHERE id IN (1, 2)
GROUP BY friend_id
HAVING COUNT(*) > 1
<强> DEMO 强>