MySQL从降序开始限制

时间:2010-04-25 16:46:21

标签: mysql

是否可以编写查询以使用相同的“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行第一行。谢谢你的回答

4 个答案:

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