请教一个SQL查询语句写法

2013-09-22 16:26:05 +08:00
 brikhoff
类似与新浪微博共同关注的人。多对多的问题。关注表id uid fid:id主键,uid用户uid(被关注者), fid粉丝uid(关注者)。现在有a,b两个人其uid分别为1和2,那么如何查询其共同关注的人。"SELECT * FROM `u_f` WHERE fid = 2 and uid in (SELECT uid FROM `u_f` WHERE fid = 1)",这条语句是可以得到,但是如果是要查询三个人共同关注的呢,要查询四个人共同关注的呢,如果这样上上面那样嵌套感觉有点并不靠谱,还是本身表结构上面就有问题?
2205 次点击
所在节点    问与答
1 条回复
rpx
2013-09-22 16:42:11 +08:00
我的思路:
先分别查出关注者1 2 3 4所关注的对象id,(4句单独sql可以实现)
然后把这4个sql的结果当成表,直接join就可以了。

或者
select uid,count(*)
from u_f
where fid in (1,2,3,4)
group by uid
having count(*)=4 --几个人就等于几
注意性能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX