mysql - 关于php查询数据库的问题
天蓬老师
天蓬老师 2017-04-10 15:57:44
[PHP讨论组]

我正在做一个学校内部交流系统,现在遇到一个问题

比如:用户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查询语句怎么写呢?感谢大家!!

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
大家讲道理

查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;
PHP中文网

先查询到用户a关注的人,然后再判断这些人有没有关注b

PHP中文网

确定不用redis???

迷茫

假设a->b,a->[b,c,d,e],会不会有c->b或d->b呢,设定->左侧为left(关注人),右侧为right(被关注人),先找到a所关注的对象[right],再以右侧b找到所有左侧关注人[left],在从[left]中找[right],SQL语句就不写了。。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号