时间:2021-07-01 10:21:17 帮助过:38人阅读
比如:用户A的ID是5,用户B的ID是6,如何实现用户A关注的人同样也关注B,怎么统计出来人数呢?
已知的表:Follow_table(关注表)
follow_id(自增ID) | user_id(关注者ID) | follow_user_id(被关注者ID) | follow_time(关注时间) |
--------------------------------------------------------------------------------------------------
1 | 5 | 1 | 2015-08-22 10:29:11 |
以上是表的结构。
请问mysql查询语句怎么写呢?感谢大家!!
我正在做一个学校内部交流系统,现在遇到一个问题
比如:用户A的ID是5,用户B的ID是6,如何实现用户A关注的人同样也关注B,怎么统计出来人数呢?
已知的表:Follow_table(关注表)
follow_id(自增ID) | user_id(关注者ID) | follow_user_id(被关注者ID) | follow_time(关注时间) |
--------------------------------------------------------------------------------------------------
1 | 5 | 1 | 2015-08-22 10:29:11 |
以上是表的结构。
请问mysql查询语句怎么写呢?感谢大家!!
查A关注的人里有多少关注B的,是这意思吧
select count (1) from Follow_table where follow_user_id=6 and user_id in
(select follow_user_id from Follow_table where user_id=5)
是说A、B同时关注的人,建议分别取A关注的人和B关注的人然后取数组交集这样会降低数据库负载,因为数据库CPU资源更宝贵。
一条sql的话试试这样:
select a.follow_user_id from Follow_table a, Follow_table b where a.user_id=5 and b.user_id=6 and a.follow_user_id=b.follow_user_id;
先查询到用户a关注的人,然后再判断这些人有没有关注b
确定不用redis???
假设a->b,a->[b,c,d,e],会不会有c->b或d->b呢,设定->左侧为left(关注人),右侧为right(被关注人),先找到a所关注的对象[right],再以右侧b找到所有左侧关注人[left],在从[left]中找[right],SQL语句就不写了。。。