假设我有一个包含两列的 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
我知道这会失败。
谢谢
最佳答案
尝试下面的查询。
SELECT * FROM(
SELECT * FROM test ORDER BY prio DESC LIMIT 0,3
) t ORDER BY prio ASC, datum asc;
子查询将根据优先级降序排列并返回最后 3 条记录。外部查询将再次按升序对这些优先级进行排序,然后按数据排序。
希望对您有所帮助。
关于MySQL限制从头到尾的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081019/