0

だから私は友情のリクエストを保持するデータベーステーブルを持っています. 私がしなければならないことは、行方不明のペアを見つけることです。例は次のようになります。

適切な値は

友達A > 友達B
と
友達B > 友達A  

私がやりたいのは、行方不明のパートナーシップを見つけることです。したがって、 がFriend A > Friend Bあり、反対が欠落している場合。不足しているものをリストアップしたいと思います。

私は一生、これを達成するための最良の方法を頭に巻き込むことはできません。助言がありますか?

4

2 に答える 2

3

あなたはこのようにすることができます

SELECT MIN(user_id) user_id,
       MIN(friend_id) friend_id
  FROM Table1
 GROUP BY LEAST(user_id, friend_id),
          GREATEST(user_id, friend_id)
HAVING COUNT(*) = 1

与えられたサンプルデータ

| | ユーザー ID | FRIEND_ID |
|---------|-----------|
| | 1 | 2 |
| | 2 | 1 |
| | 1 | 3 |
| | 2 | 4 |
| | 5 | 6 |
| | 6 | 5 |

クエリの出力

| | ユーザー ID | FRIEND_ID |
|---------|-----------|
| | 1 | 3 |
| | 2 | 4 |

これがSQLFiddleのデモです

于 2013-08-30T03:15:18.707 に答える
0

not exists次の句を使用してこれを行うことができます。

select f.B as A, f.A as B
from friends f
where not exists (select 1
                  from friends f2
                  where f2.A = f.B and f2.B = f.A
                 );

このselect句は、欠落しているものを提供します。select f.*個人的には、比類のない友達を得るためにやります。

于 2013-08-30T03:15:50.527 に答える