Postgresql - 如何根据另一个查询的结果选择结果

时间:2013-08-02 07:42:49

标签: sql

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

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

例如:

A,B,C是用户,A是C,另一种方式,B是C,但C没有B。

Friend table

user friend
 A      C
 C      A
 B      C

B想要朋友ips。如何编写一个sql查询,能够检查C是否也与B结合?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你必须检查你的朋友是否相互。可以使用left outer join

执行
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 FIDDLE EXAMPLE