mysql - 从用户关注者中检索最关注的用户
问题描述
所以我有一个followers
表(显然)包含哪些用户关注谁。
我想做的是找出用户 1的所有关注者 ( U1F
),找出他们都关注的人 ( U1Ffol
),然后使用U1Ffol
, 总结U1F
最集体关注的人。这可能没有意义,但我对如何在SQL中显示它有一个非常粗略的想法(请记住,我有点菜鸟,所以很抱歉,因为这显然是无效的代码,不是我想要的使用)。
/* retrieve user 1's followers */
SELECT follower AS U1F FROM followers WHERE following = 1;
/* retrieve who each of those users is following */
SELECT following AS U1Ffol FROM followers WHERE follower IN U1F;
/* find out who they're all following *collectively* */
SELECT
following AS User,
COUNT(*) as f_count
FROM U1Ffol
GROUP BY User
ORDER BY f_count DESC
这是表结构:
+----+----------+-----------+
| id | follower | following |
+----+----------+-----------+
| 1 | 2 | 1 |
| 2 | 5 | 1 |
| 3 | 9 | 1 |
| 4 | 1 | 4 |
| 5 | 1 | 5 |
| 6 | 4 | 1 |
+----+----------+-----------+
因此,在这种情况下,预期的输出将是(有趣的是,他们关注最多的人统称为User 1):
+------+---------+
| User | f_count |
+------+---------+
| 1 | 4 |
| 4 | 1 |
| 5 | 1 |
+------+---------+
希望这更有意义。
在过去的几天里,我一直试图弄清楚这个SQL ,但我对这门语言太陌生了,无法理解如何正确实现它。因此,所有帮助和提示将不胜感激,
干杯。
解决方案
低于你想要的 -
SELECT following AS User,
COUNT(*) as f_count
FROM (SELECT following
FROM followers
WHERE follower IN (SELECT follower
FROM followers
WHERE following = 1)) t
GROUP BY following
ORDER BY f_count DESC;
推荐阅读
- vb.net - Visual Basic - 2 点之间的随机数(纬度和经度)
- excel - 为什么Excel VBA中新创建的命名范围的RefersTo公式中有空格?
- ios - Swift - 如何使用 CAShapeLayer 绘制 3 颗钻石般的棒球场?
- r - 用r中的两个数据集将一条线拟合到qqplot
- angular - 如何获得有序的嵌套承诺Angular 9
- ios - iOS 使用 Codemagic 构建失败 [适用于 Xcode]
- swift - 基于范围的 for 循环与传统的 c 风格 for 循环相比有什么好处?
- c++ - TCP 高 CPU 多客户端服务器
- asp.net-core - 不应为已部署的应用程序 / ASPNETCORE_ENVIRONMENT 启用开发环境
- python - 在 Python 中使用 Selenium 时,我总是收到“弃用警告”