1

私はこのようなMySQLテーブルを持っています:

| USER | FRIEND |
-----------------
|    1 |      2 |
|    2 |      1 |
|    1 |     16 |
|   16 |      1 |
|    1 |      4 |

MySQLクエリを記述して、のすべての(受け入れられた)友人を一覧表示する必要がありますuser 1。この場合、その友情は受け入れられないため、返されますが、返さ2れません。164

これを行うための1クエリの方法はありますか?

4

2 に答える 2

3

これを試してください:

select * from table1 a
join table1 b
on a.user = b.friend
and b.user = a.friend
;

SQLFIDDLE デモ

| USER | FRIEND |
-----------------
|    2 |      1 |
|    1 |      2 |
|   16 |      1 |
|    1 |     16 |

クエリを変更し、必要な正確なユーザーを指定することで、友人またはユーザーを簡単に取得できます。

select A.FRIEND from table1 a
join table1 b
on a.user = b.friend
and b.user = a.friend
WHERE A.USER = 1
;

| FRIEND |
----------
|      2 |
|     16 |
于 2013-01-21T08:02:27.323 に答える
1

ユーザー 1 のすべての (受け入れられた) 友達を一覧表示するには、MySQL クエリを作成する必要があります。

受け入れられた揚げ物が、テーブルに2つのエントリを持つ友人であると仮定すると、1つはユーザーから友人へ、もう1つは友人からユーザーへ(質問のサンプルデータで説明したように)、これを行うことができます:

SELECT ID
FROM
(
      SELECT user AS ID FROM friends WHERE friend = 1
      UNION ALL 
      SELECT friend     FROM friends WHERE user = 1
) t 
GROUP BY ID
HAVING COUNT(ID) > 1;

SQL フィドルのデモ

これにより、次のことが得られます。

| ID |
------
|  2 |
| 16 |
于 2013-01-21T07:59:37.740 に答える