假设我有一个包含两列的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
我知道这失败了。
谢谢
答案 0 :(得分:1)
尝试以下查询。
SELECT * FROM(
SELECT * FROM test ORDER BY prio DESC LIMIT 0,3
) t ORDER BY prio ASC, datum asc;
子查询将根据优先级对降序进行排序,并返回最后3条记录。外部查询将再次按升序对这些优先级进行排序,然后对基准进行排序。
希望这会对你有所帮助。