3

複数のユーザーの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 RICHARD と DANIEL の列が返されます。 、できれば重複しないでください。

4

2 に答える 2

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

これにより、行ごとに同じ友達を持つ 2 人が返されます: http://sqlfiddle.com/#!2/c9f36/2/0

于 2012-08-26T19:20:41.223 に答える
3
SELECT friend_id, friend_name
FROM friends
WHERE id IN (1, 2)
GROUP BY friend_id
HAVING COUNT(*) > 1

デモ

于 2012-08-26T19:27:25.663 に答える