首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于发生次数的返回记录

基于发生次数的返回记录
EN

Stack Overflow用户
提问于 2020-05-22 14:52:24
回答 1查看 15关注 0票数 0

我在db表'fb_list‘中有以下记录,我想查询它,以便检索'Assoc’的计数按等级排序小于4的所有记录。

代码语言:javascript
复制
Rank    Name    Assoc
1   PLAYER1 CHN
2   PLAYER2 CHN
3   PLAYER3 CHN
4   PLAYER4 CHN
5   PLAYER5 JPN
6   PLAYER6 BRA
7   PLAYER7 TPE
8   PLAYER8 CHN
9   PLAYER9 SWE
10  PLAYER10 GER

预期结果应返回记录1-3,5-7,9,10谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-22 14:57:44

对于MySql 8.0+,使用ROW_NUMBER()窗口函数:

代码语言:javascript
复制
select t.`rank`, t.name, t.assoc
from (
  select *, row_number() over (partition by assoc order by `rank`) rn
  from fb_list
) t
where t.rn < 4

演示

以前的版本

代码语言:javascript
复制
select t.`rank`, t.name, t.assoc
from fb_list t
where (select count(*) from  fb_list where assoc = t.assoc and `rank` < t.rank) < 3 

演示

结果:

代码语言:javascript
复制
| rank | name     | assoc |
| ---- | -------- | ----- |
| 1    | PLAYER1  | CHN   |
| 2    | PLAYER2  | CHN   |
| 3    | PLAYER3  | CHN   |
| 5    | PLAYER5  | JPN   |
| 6    | PLAYER6  | BRA   |
| 7    | PLAYER7  | TPE   |
| 9    | PLAYER9  | SWE   |
| 10   | PLAYER10 | GER   |
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61957749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档