我想知道如何获取用户关注者列表以及他/她的跟踪状态。例如,我有10个粉丝,我需要知道我是否关注他们。它是一个像Instagram上的功能,当你可以观察人们并被观察时。
我有一张桌子:
follower user_id reg_dt followed
1 2 date true
在上面提到的示例中,用户1之后是用户2.如果用户将取消关注,则该标志将为false,但它将在DB中。
我想实现:
follower user_id reg_dt followed logged_user_follower
1 2 date true false
这意味着用户1后跟用户2,但用户1没有跟随用户2。
我尝试了2次查询:
select follower.follower_id as follower, follower.user_id as user_id, follower.followed as followed, follower.reg_dt as reg_dt
from tb_follower follower
where follower.follower_id=1 and follower.followed=1;
获取(用户1的)关注者列表和:
select 1 as logged_user_follower from tb_follower follower
where follower.follower_id=follower.follower_id and follower.followed=1 and follower.user_id = follower.user_id limit 1
获取状态logged_user_follower。
我不知道如何将其合并到查询中,做一个有效的,列出特定用户的所有关注者以及他/她跟随他们的状态。
任何帮助将不胜感激。 感谢。
答案 0 :(得分:1)
我认为您可以使用LEFT JOIN
获取反向记录:
select f1.follower_id as follower,
f1.user_id as user_id,
f1.followed as followed,
f1.reg_dt as reg_dt,
coalesce(f2.followed, false) as logged_user_follower
from tb_follower f1
left join tb_follower f2
on f1.follower_id = f2.user_id and f1.user_id = f2.follower_id
where f1.follower_id = 1 and f1.followed = 1;