是否有一个查询会返回以字母(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
答案 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 强>