mysql - 在给定 ID 之前直接选择 N 项

标签 mysql sql

如果下面的每个按字母数字顺序排列的项目 (id) 都有一行:

aa ab ac ba cc cf ff gh h4 ia

我想直接在 cc 之前选择 3 个项目,即 abacba(按顺序)。我的 MySQL 查询不会直接在 cc 之前选择项目,而是从列表的开头。

SELECT * FROM things WHERE id < 'cc' ORDER BY id LIMIT 3.

同样,此查询不起作用,因为它不会在cc 之前直接 检索项目。这里正确的方法是什么?

最佳答案

你非常接近:

SELECT *
FROM things
WHERE id < 'cc'
ORDER BY id DESC
------------^
LIMIT 3;

您需要按降序对项目进行排序,以获得 'cc' 之前的“最大”项目。

此外,对于三个项目,您需要 limit 3。我认为“2”是一个错字。

如果您希望这些按字母顺序排列,请使用子查询并再次排序:

SELECT t.*
FROM (SELECT t.*
      FROM things t
      WHERE id < 'cc'
      ORDER BY id DESC
      LIMIT 3
     ) t
ORDER BY id ASC;

关于mysql - 在给定 ID 之前直接选择 N 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40071580/

相关文章:

mysql - SQL Select语句构造

MySQL Workbench 在空闲时断开连接

mysql - 数据库中的多重连接4表

mysql - 索引创建优化

SQL LIKE 没有返回正确的结果

SQL*Plus - 数字列显示十六进制字符

mysql - 如何在 MySQL 中对具有数值的列进行排序

mysql - 如果数据类型相同,则对列数据求和

php - 从多条件请求中选择行

sql - 保留 82 列数据行的最佳 SQL 表模型是什么?