当前位置: 首页 > news >正文

如何用 SQL 找到最受欢迎的用户?

在社交网络或好友关系系统中,“最受欢迎的用户” 通常是拥有最多好友的人。如何通过 SQL 快速找到这样的用户呢?本文将通过一个简洁的 SQL 查询解决这个问题。

602. 好友申请 II :谁有最多的好友 - 力扣(LeetCode)

数据表结构

假设我们有一个好友请求记录表 RequestAccepted,结构如下:

字段名描述
requester_id请求者用户 ID
accepter_id接受者用户 ID

每行数据表示一条好友请求被接受的记录。例如:

requester_idaccepter_id
12
13
23

 

目标

找到好友数量最多的用户,并返回其 ID 和好友数量。

解决方案

通过以下 SQL 查询实现:

WITH Friends AS (-- 合并所有用户的“好友关系”ID(包括请求者和接受者)SELECT requester_id AS idFROM RequestAcceptedUNION ALLSELECT accepter_id AS idFROM RequestAccepted
)
-- 统计每个用户的好友数量,并取最大值
SELECT id, COUNT(*) AS num
FROM Friends
GROUP BY id
ORDER BY num DESC
LIMIT 1;

分步解析

步骤 1:合并所有好友关系

使用 UNION ALL 将 请求者(requester_id 和 接受者(accepter_id 的 ID 合并到一个列表中:

 

SELECT requester_id AS id FROM RequestAccepted
UNION ALL
SELECT accepter_id AS id FROM RequestAccepted
  • UNION ALL 会保留重复记录(例如用户 1 多次添加好友)。

  • 结果示例:

    id
    1
    1
    2
    3

步骤 2:统计好友数量

按用户 ID 分组,统计每个用户的总出现次数(即好友数量):

SELECT id, COUNT(*) AS num
FROM Friends
GROUP BY id
  • COUNT(*) 统计每个用户出现的总次数。

  • 结果示例:

    idnum
    12
    22
    31

步骤 3:排序并取最大值

按好友数量降序排列,取第一名:

ORDER BY num DESC
LIMIT 1;

 

最终结果:

idnum
12

技术细节

  1. 为什么用 UNION ALL 而不是 UNION

    • UNION ALL 保留重复记录,确保正确统计所有好友关系。

    • UNION 会去重,导致计数不准确。

  2. LIMIT 1 的注意事项

    • 如果有多个用户并列第一,此查询只会返回其中一个。

    • 若需要返回所有并列用户,可移除 LIMIT 并在应用层处理。

 

总结

通过 合并请求方和接受方的用户 ID 并统计出现次数,我们能够快速找到最受欢迎的用户。

相关文章:

  • 数据结构第3章 线性表 (竟成)
  • Dify中的Extension插件开发例子:以neko为例
  • 二叉树遍历
  • RT-Thread源码阅读(3)——内核对象管理
  • ollama list模型列表获取 接口代码
  • Python打卡第37天
  • Redis与Lua脚本深度解析:原理、应用与最佳实践
  • 【DCCN】多模态情感分析解耦交叉属性关联网络
  • 【Redis】第1节|Redis服务搭建
  • 在Windows上,将 Ubuntu WSL 安装并迁移到 D 盘完整教程(含 Appx 安装与迁移导入)
  • FFmpeg 4.3 H265 二十二.4,使用计算机摄像头,通过VCL软件, 模拟 监控摄像头 的 RTSP 流
  • SDL2常用函数:SDL_BlitSurfaceSDL_UpdateWindowSurface 数据结构及使用介绍
  • Elasticsearch Synthetic _source
  • openpi π₀ 项目部署运行逻辑(三)——策略推理服务器 serve_policy.py
  • OpenCV (C/C++) 中使用 Sobel 算子进行边缘检测
  • Leetcode 3557. Find Maximum Number of Non Intersecting Substrings
  • 如何通过PHPMyadmin对MYSQL数据库进行管理?
  • MQTT-Vue整合
  • 精益数据分析(87/126):市场-产品契合度重构——现有产品寻找新市场的实战指南
  • R 语言科研绘图 --- 热力图-汇总
  • 大良营销网站建设流程/百度平台商家
  • 旅社网站建设/seo是什么?
  • 长沙营销型网站/长春网站seo哪家好
  • 网站开发与管理课程设计心得/惠州百度seo
  • 备案需要网站建设方案书/100个成功营销策划案例
  • b2b电子商务网站调研报告一千字/中央电视台新闻联播