0

我正在开发一个服务器,人们可以在该服务器上轻松添加、删除朋友,并在他们登录时询问他们当前的 ip。

我将我的数据库构建为第一个包含用户名的表,另一个包含地址+这些用户的 fk,最后另一个称为“朋友”的表包含用户 -> 朋友。

例如 :

A、B、C 是用户,A 与 C 为好友,反之,B 与 C 为好友,但 C 未与 B 为好友。

Friend table

user friend
 A      C
 C      A
 B      C

B想要朋友的ips。我如何编写一个能够检查 C 是否也与 B 成为朋友的 sql 查询?

4

1 回答 1

1

如果我理解你的问题,你必须检查你的朋友是否相互。可以用左外连接来执行

select
    t1.*,
    case when t2.user is not null then 1 else 0 end is_mutual
from test as t1
    left outer join test as t2 on t2.user = t1.friend and t2.friend = t1.user

SQL 提琴示例

于 2013-08-02T07:49:26.097 回答