我有一个场景,需要以升序顺序获得一组结果,但只需要给出降序序列中的最后一个ID。
由于ID是自动生成的,所以顺序总是按顺序上升,但是,我不能保证ID序列是完整的。也就是说,我不能说8-3= 5,因此从5开始做一个正向查找。
最有效的办法是实现这一点。如果可能的话,我希望避免在应用程序逻辑中操作集合,但可以作为最后的手段。
发布于 2017-05-25 08:36:29
您可以使用内部选择:
SELECT *
FROM (
SELECT *
FROM your_table
WHERE id <= X
ORDER BY id DESC
LIMIT Y
) d
ORDER BY id ASC
发布于 2017-05-25 08:41:41
您可以使用查询定义您自己的rownum
,并应用mod
来获取每3条记录,而不管它的id是什么,例如:
SELECT *
FROM (SELECT id, name, @rownum := @rownum + 1 as `num`
FROM test, (SELECT @rownum := 0) a ) b
WHERE b.num % 3 = 0;
这是SQL Fiddle。
https://stackoverflow.com/questions/44175902
复制相似问题