我有一个场景,我需要以升序顺序获取一组结果,但只给出降序序列中的最后一个ID。
由于ID是自动生成的,因此订单将始终按顺序递增,但我无法保证ID序列不会中断。即我不能说8 - 3 = 5因此从5开始正向查找。
实现这一目标最有效的是什么。如果可能我想避免在应用程序逻辑中操纵集合,但可以作为最后的手段。
答案 0 :(得分:2)
您可以使用内部选择:
SELECT *
FROM (
SELECT *
FROM your_table
WHERE id <= X
ORDER BY id DESC
LIMIT Y
) d
ORDER BY id ASC
答案 1 :(得分:1)
您可以使用查询定义自己的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 。