返回以字母(a-z)开头的前3个结果

时间:2018-04-02 08:48:43

标签: mysql sql

是否有一个查询会返回以字母(a-z)开头的前三个结果?我不是指一个字母的前三个结果,而是按字母顺序排列所有字母(a-z)的前三个结果。

所以,假设我有一个名为的表:

id  name
1   Abe 
2   Andy
3   Asad
4   Azizi
5   Berta
6   Bulma
7   Caan
8   Carl
9   Cesar
10  Coby
11  Dimitri

并希望从查询中获得此结果(前三个以字母开头)

id  name
1   Abe 
2   Andy
3   Asad
4   Berta
5   Bulma
6   Caan
7   Carl
8   Cesar
9   Dimitri

1 个答案:

答案 0 :(得分:3)

您可以使用ROW_NUMBER(MySQL 8.0 + / MariaDB):

SELECT *
FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY UPPER(LEFT(Name,1))
                    ORDER BY name) AS rn
     FROM tab
) sub
WHERE rn <=3
ORDER BY name;

<强> DB-Fiddle.com Demo

<强> DBFiddle Demo