我需要展示一组人中最受关注的人。
SELECT * FROM User
JOIN(
SELECT DISTINCT f.followee_id, COUNT(*) as cnt
FROM Follow f
GROUP BY f.followee_id
ORDER BY cnt desc) derv_table
WHERE User.id = derv_table.followee_id
此表中的结果
id | email | zipcode | followee_id | cnt
-----|-------------------------------|------------|-------------|-----
80 | kkiehn@example.com | 81629-3826 | 80 | 2
39 | berenice.predovic@example.com | 90222-0327 | 39 | 2
4 | schaden.lea@example.com | 35465-6959 | 4 | 2
100 | kathryne.braun@example.org | 80558-1775 | 100 | 2
11 | auer.sterling@example.net | 06562-5156 | 11 | 1
49 | arlie.ortiz@example.org | 69874-3485 | 49 | 1
78 | beahan.andreanne@example.net | 73719-7076 | 78 | 1
13 | kaitlyn28@example.com | 16426-2360 | 13 | 1
因为followee\u id和id是同一个键,所以我一直在排序哪些人拥有最多的追随者。
这个表继续,cnt是一个派生的(或计算的值),我如何只显示包含cnt最大值的行(对于有最大值的n个记录,所以限制是不够的)我尝试了各种连接和不同的条件,但都没有得到任何结果。
1条答案
按热度按时间iswrvxsc1#
在早于8+的mysql版本中,我们可以使用子查询:
在mysql 8+或更高版本中,我们可以利用
RANK
分析函数: