一尘不染

在SQL中,如何为每个组选择前2行

mysql

我有一张桌子,如下所示:

NAME    SCORE
-----------------
willy       1
willy       2
willy       3
zoe         4
zoe         5
zoe         6

这是样本

的汇总功能group by仅允许我获得每个方面的最高分name。我想查询以获得每个人的最高2分name,我该怎么办?

我的预期输出是

NAME    SCORE
-----------------
willy       2
willy       3
zoe         5
zoe         6

阅读 339

收藏
2020-05-17

共1个答案

一尘不染

SELECT *
FROM   test s
WHERE 
        (
            SELECT  COUNT(*) 
            FROM    test  f
            WHERE f.name = s.name AND 
                  f.score >= s.score
        ) <= 2
2020-05-17