MySQL向后查找前向结果

时间:2017-05-25 08:32:03

标签: mysql sql

我有一个场景,我需要以升序顺序获取一组结果,但只给出降序序列中的最后一个ID。

enter image description here

由于ID是自动生成的,因此订单将始终按顺序递增,但我无法保证ID序列不会中断。即我不能说8 - 3 = 5因此从5开始正向查找。

实现这一目标最有效的是什么。如果可能我想避免在应用程序逻辑中操纵集合,但可以作为最后的手段。

2 个答案:

答案 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