MySQL从头开始限制查询

时间:2017-07-13 12:45:17

标签: mysql

假设我有一个包含两列的MySQL表,我执行(它可能不是更简单)一个查询

select * from test order by prio asc, datum asc

这给了我预期的结果:

datum      | prio
2017-07-02 | 1 
2017-07-09 | 2
2017-06-11 | 3
2017-06-01 | 4
2017-06-18 | 5
2017-06-25 | 6

现在,我想限制我的结果只有最后3行,避免做一些偏移,因为那时我必须计算行数,所以我知道这有效:

select * from test order by prio asc, datum asc limit 3,3

但是有一个技巧,我可以做类似的事情:

select * from test order by prio asc, datum asc limit -3  

我知道这失败了。

谢谢

1 个答案:

答案 0 :(得分:1)

尝试以下查询。

SELECT * FROM(
    SELECT * FROM test ORDER BY prio DESC LIMIT 0,3
) t ORDER BY prio ASC, datum asc;

子查询将根据优先级对降序进行排序,并返回最后3条记录。外部查询将再次按升序对这些优先级进行排序,然后对基准进行排序。

希望这会对你有所帮助。