如何比较两列的重复值?

时间:2012-08-26 19:14:20

标签: mysql sql

我有一个包含几个用户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理查德和丹尼尔,最好不要重复。

2 个答案:

答案 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