SQL05:计算相互关注的用户

问题:假设存在一张tmp表,记录了用户id和该用户关注的用户id,我们希望筛选出相互关注的用户,如何用sql求解?

求解方法一:直接用原表做关联判断,简单直接,但是存在数据膨胀的风险。

with tmp as
(
    select "乔峰" as from_user,"段誉" as to_user
    union all
    select "乔峰" as from_user,"虚竹" as to_user
    union all
    select "虚竹" as from_user,"乔峰" as to_user
    union all
    select "徐风年" as from_user,"徐骁" as to_user
    union all
    select "徐骁" as from_user,"徐风年" as to_user
)
select
a.from_user,
a.to_user,
if(b.from_user is not null, 1, 0) as is_friend -- 1:互相关注 
from tmp a
left join tmp b
on a.from_user=b.to_user and a.to_user=b.from_user
;

求解方法二:找到互相关注的人的规律,当他们是互相关注时,那么将from_user和to

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值