Mysql 按a到z排序,带限制

Mysql 按a到z排序,带限制,mysql,sql,select,sql-order-by,top-n,Mysql,Sql,Select,Sql Order By,Top N,我有一个表customers,其中有一个字段“name”,其中包含a到z名称记录 我使用asc查询从a到z获取记录 SELECT * FROM `customers` ORDER BY name ASC 但是,我怎样才能得到5条记录,这些记录都是从a到z字母开始的,只有一个查询 输出: 1| aa|1 2| ab|2 4| ba|1 5| bb|2 7| ca|1 8| cb|2 a a a a a b b b b b 依此类推到z。 提前谢谢 试试这个: SELECT

我有一个表customers,其中有一个字段“name”,其中包含a到z名称记录

我使用asc查询从a到z获取记录

SELECT * FROM `customers` ORDER BY name ASC
但是,我怎样才能得到5条记录,这些记录都是从a到z字母开始的,只有一个查询

输出:

1|  aa|1

2|  ab|2

4|  ba|1

5|  bb|2

7|  ca|1

8|  cb|2
a

a

a

a

a

b

b

b

b

b 依此类推到z。 提前谢谢

试试这个:

SELECT c.name
FROM (SELECT c.name, IF(@lastLetter=@lastLetter:=LEFT(c.name, 1), @cnt:=@cnt+1, @cnt:=0) letterCnt
      FROM customers c, (SELECT @lastLetter:='', @cnt:=0) A 
      ORDER BY c.name ASC
    ) AS c
WHERE c.letterCnt < 5

当您使用SQL时,您可以使用诸如、和行数之类的函数

DECLARE @Customer AS TABLE
(
    Id int,
    Name varchar(50)
)

INSERT INTO @Customer VALUES
(1, 'aa'),
(2, 'ab'),
(3, 'ac'),
(4, 'ba'),
(5, 'bb'),
(6, 'bc'),
(7, 'ca'),
(8, 'cb'),
(9, 'cc')

select *
from (
    select *, 
        RANK() OVER(PARTITION BY SUBSTRING(Name, 1, 1) ORDER BY Name ASC) AS [Rank] 
    from @Customer
) tableWithRank
WHERE tableWithRank.Rank <= 2

这是否需要作为单个sql语句/查询来完成,还是可以调用存储过程/函数来提供结果?@Raad作为单个查询。相关信息:Saharsh Shah我在mysql中得到结果,但在sqlite中没有。您能帮我了解sqlite吗?@TonyStark抱歉,我是sqllite的新手。如果您能帮我,我将收到此错误[无法识别的令牌::]。@TonyStark抱歉,但我无法帮助您了解SQLLiteOk np。谢谢你的回答,但我以后会接受的。我也需要它在sqlite,但我可以给你投票。你能解释一下你的疑问吗?太神奇了。