从降序开始的MySQL限制

从降序开始的MySQL限制,mysql,Mysql,是否可以编写一个查询来使用相同的“LIMIT(from),(count)”,但返回结果 在示例中,如果表中有8行,并且我希望在两个步骤中获得5行,我会: 第一步查询: select * from table limit 0, 5 select * from table limit 5, 5 第一步结果: first 5 rows; last 3 rows; 第二步查询: select * from table limit 0, 5 select * from table limit 5

是否可以编写一个查询来使用相同的“LIMIT(from),(count)”,但返回结果

在示例中,如果表中有8行,并且我希望在两个步骤中获得5行,我会: 第一步查询:

select * from table limit 0, 5
select * from table limit 5, 5
第一步结果:

first 5 rows;
last 3 rows;
第二步查询:

select * from table limit 0, 5
select * from table limit 5, 5
第二步结果:

first 5 rows;
last 3 rows;

但我想得到它,反之亦然。我的意思是,从第一步开始,我想要最后3行,从第二步开始,我想要前5行。谢谢您的回答

是的,您可以交换这两个查询

select * from table limit 5, 5

select * from table limit 0, 5

不,你不应该这样做。如果没有ORDER BY子句,您就不应该依赖于不同查询的结果顺序是相同的。在测试期间,它可能工作得很好,但顺序不确定,以后可能会中断。使用订单

SELECT * FROM table1 ORDER BY id LIMIT 5
顺便说一下,获取最后3行的另一种方法是颠倒顺序并选择前三行:

SELECT * FROM table1 ORDER BY id DESC LIMIT 3

即使结果集中的行数不总是8,这种方法也总是有效的。

这种方法相对比较容易

SELECT doc_id,serial_number,status FROM date_time ORDER BY  date_time DESC LIMIT 0,1;

假设我们有一个带有列时间的表,您需要最后5个条目,但您希望它们以asc顺序返回给您,而不是desc,这是您的操作方式:

select * from ( select * from `table` order by `time` desc limit 5 ) t order by `time` asc

的确如果结果没有排序,则向后没有意义。因此,排序依据在限制之前适用吗?@faya:在这样一个简单的情况下,是的。是否可以在同一查询中使用group by和order by。。?