力扣602(MySQL)-好友申请Ⅱ:谁有最多的好友(中等)
题目:
在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。
RequestAccepted 表:
(requester_id, accepter_id) 是这张表的主键。
这张表包含发送好友请求的人的 ID ,接收好友请求的人的 ID ,以及好友请求通过的日期。
问题
写一个查询语句,找出拥有最多的好友的人和他拥有的好友数目。
生成的测试用例保证拥有最多好友数目的只有 1 个人。
示例:
输入:
RequestAccepted 表:
输出:
解释:
编号为 3 的人是编号为 1 ,2 和 4 的人的好友,所以他总共有 3 个好友,比其他人都多。
解题思路:
使用union all不去重连接:
①先将两张表不去重连接;
1 select requester_id id from request_accepted_602 2 union all 3 select accepter_id id from request_accepted_602
②再使用group by 按照id进行分组,然后select 里统计出每个id出现的次数,再按次数进行降序排序,最后limit 1。
1 select id,count(*) as num 2 from ( 3 select requester_id id from request_accepted_602 4 union all 5 select accepter_id id from request_accepted_602 6 ) t 7 group by id 8 order by num DESC 9 limit 1
小知识:
①SQL的书写顺序:
select => from => join => on => where => group by => having => union => order by => limit
②SQL的执行顺序:
from => on => join => where => group by => having => select => union => order by => limit
③count(*),count(1)和count(字段)
count(*)和count(1)执行效果上没有区别,会统计列值为null的所有行数,只是在执行效率上有区别。
count(字段):只包含列名的列,统计表中出现该字段的次数,并且不统计字段为null的情况。
标签:
MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)