是否可以编写查询以使用相同的“LIMIT(from),(count)”,但是向后获得结果?
在示例中,如果表中有8行,并且我希望分两步获得5行,我会: 第一步查询:
select * from table limit 0, 5
第一步结果:
first 5 rows;
第二步查询:
select * from table limit 5, 5
第二步结果:
last 3 rows;
但我想反过来说。我的意思是从第一步开始我想要最后3行,从第二步开始我想要 5行第一行。谢谢你的回答
答案 0 :(得分:30)
不,你不应该这样做。如果没有ORDER BY
子句,则不应该依赖于从查询到查询的结果顺序。它可能在测试期间很好地工作,但顺序是不确定的,可能会在以后破坏。使用订单。
SELECT * FROM table1 ORDER BY id LIMIT 5
顺便说一下,获取最后3行的另一种方法是颠倒顺序并选择前三行:
SELECT * FROM table1 ORDER BY id DESC LIMIT 3
即使结果集中的行数不总是8,这也总是有效。
答案 1 :(得分:2)
假设我们有一个带有列时间的表,并且您想要最后5个条目,但是您希望它们以asc而不是desc的顺序返回给您,这是您的操作方式:
select * from ( select * from `table` order by `time` desc limit 5 ) t order by `time` asc
答案 2 :(得分:0)
select * from table limit 5, 5
select * from table limit 0, 5
答案 3 :(得分:0)
这种方式相对容易
SELECT doc_id,serial_number,status FROM date_time ORDER BY date_time DESC LIMIT 0,1;