题目难度
中等
题目描述
在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。
表 request_accepted 存储了所有好友申请通过的数据记录,其中, requester_id 和 accepter_id 都是用户的编号。
写一个查询语句,求出谁拥有最多的好友和他拥有的好友数目。对于上面的样例数据,结果为
正确答案
SELECT id,COUNT(id) AS num
FROM
(SELECT accepter_id AS id FROM request_accepted
UNION ALL
SELECT requester_id FROM request_accepted) t1
GROUP BY id
ORDER BY num DESC
LIMIT 1;
union all 将不去重拼接,union all 重复行自动去重。
进阶
找到所有好友量最多的人
SELECT *
FROM
(
SELECT id, COUNT(id) AS num
FROM (
SELECT accepter_id AS id FROM request_accepted
UNION ALL
SELECT requester_id FROM request_accepted
) t1
GROUP BY id
ORDER BY num DESC
) t2
HAVING num=MAX(num)
多加了一层子循环