mysql - 使用 Limit 从 a 到 z 排序

标签 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. 一个

  2. 一个

  3. 一个

  4. 一个

  5. 一个

  6. b

  7. b

  8. b

  9. b

  10. 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

关于mysql - 使用 Limit 从 a 到 z 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21234231/

相关文章:

php - 在ubuntu容器上添加mysql数据库

c# - MySql 连接字符串的 Entity Framework 错误

php - 试图计算下一个生日的天数

java - 从 Java 调用 PL/SQL 函数时为 "SQLException: ORA-06550"

Mysql:如何检索基于 COUNT() 结果的数据

javascript - <select> 不在 IE 中工作的人群

mysql - excel将mysql日期格式作为文本格式

mysql - SELECT * JOIN ON 主键 = 外键操作中的重复列?

mysql - 如何在一些记录之间随机选择一些记录?

mysql - 高效更新MySQL记录