0

二人でお互いの友達を作ろうとしています。次のフィールドを持つ「friends」というテーブルに、personsfriendsを保存しました。

id | facebook_id | 名前| uid | タイムスタンプ

  • id=レコードの一意のID
  • facebook_id=友達のFacebookID
  • 名前=友達の名前
  • uid=テーブルに保存されている人の友達である私のサイトのユーザーuid
  • タイムスタンプ=説明する必要はありません:-)

それが理にかなっていることを願って、友達を獲得するためにさまざまな方法を試しましたが、運がありません

4

2 に答える 2

2

サブクエリを使用する方が速いのか、mySQLがすでにそれを最適化しているのかわかりません。サブクエリを使用したソリューション:

  SELECT f1.id, f1.name 
  FROM (SELECT id, name FROM friends WHERE uid=1) f1 
  JOIN (SELECT id, name FROM friends WHERE uid=2) f2 
  ON f1.id=f2.id;
于 2012-11-22T21:27:01.200 に答える
0

INTERSECTMySQLに演算子があればいいのですが...

あなたは一人のすべての友達をつかむことができます:

SELECT id, name
FROM friends
WHERE uid = 1

次に、このリストを友達テーブルに結合して、他のユーザーの同じ友達を探すことができます。

SELECT f1.id, f1.name
FROM friends f1
  JOIN friends f2 on f1.id = f2.id
WHERE f1.uid = 1
and f2.uid = 2

これは擬似コードですが、近いはずです。

于 2012-11-22T20:48:57.623 に答える