如果下面的每个按字母数字顺序排列的项目 (id) 都有一行:
aa ab ac ba cc cf ff gh h4 ia
我想直接在 cc
之前选择 3 个项目,即 ab
、ac
和 ba
(按顺序)。我的 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/