关注与粉丝表结构设计及查询

概述

关注与粉丝表一般包含我关注的用户,可以查询到我的粉丝列表,查询我关注的用户他们关注了哪些用户等这些功能。

表结构设计

字段 说明
id主键
user_id用户ID
focus_user_id被关注人ID
create_time创建时间

 描述说明

  •     user_id 设置索引 用于查询 我的关注
  •     focus_user_id   设置索引 用于查询 我的粉丝
  •     user_id ,focus_user_id 设置联合唯一索引 数据库约束控制 不会出现重复关注
  •     create_time 设置索引 用于查询 我的粉丝/我的关注 列表时 按时间倒叙分页查询
     

语句查询

1. 查询 A 的关注用户列表

select focus_user_id from user_focus where user_id = A.userId order by create_time desc

2. 查询 A 的粉丝列表

select user_id from user_focus where focus_user_id = A.userId order by create_time desc

3. 查询 A,B二个用户之间的关注状态

    ( SELECT 1 from user_focus where user_id = A.userId and focus_user_id = B.userId )
    union all
    ( SELECT 2 from user_focus where user_id = B.userId and focus_user_id = A.userId )

空数组 A,B 之前无任何关系

  1.  [1,2] A,B 相互关注
  2.  [1]  A 关注了 B
  3.  [2] B 关注了 A

4. 查询 A,B 共同关注

1. SQL语句

select * from user_focus where user_id in (A.userId,B.userId)

2. 可以用代码来实现此段功能,求A、B两个共同集合的交集

5. 查询 A,B 共同粉丝

同上

6. 查询我关注的用户他们关注了哪些用户,并排除我关注的用户和自己

。有点拗口,就是类似微博的推荐关注用户

   select distinct B.focus_user_id from user_fans A
             INNER JOIN user_fans B on A.focus_user_id = B.user_id
             LEFT JOIN user_fans C on B.focus_user_id = C.focus_user_id AND C.user_id =userId
             where A.user_id = userId AND B.focus_user_id != userId
             AND C.focus_user_id is NULL limit 10

7. 查询用户A的粉丝,并且这些粉丝是我关注的人

SELECT
	A.focus_user_id 
FROM
	user_fans A
	INNER JOIN user_fans B ON A.user_id = B.focus_user_id 
WHERE
	A.user_id = userId 
	AND B.focus_user_id = myUserId 
	LIMIT 3

参考链接

关注/粉丝 表结构设计及查询(附带SQL)_深圳市热心市民市民的博客-CSDN博客_粉丝表设计

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值