Mysql查询关注者列表

时间:2016-03-16 16:12:02

标签: mysql sql

我想知道如何获取用户关注者列表以及他/她的跟踪状态。例如,我有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。

我不知道如何将其合并到查询中,做一个有效的,列出特定用户的所有关注者以及他/她跟随他们的状态。

任何帮助将不胜感激。 感谢。

1 个答案:

答案 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;