MySQL降序限制
Posted
技术标签:
【中文标题】MySQL降序限制【英文标题】:MySQL limit from descending order 【发布时间】:2010-04-25 16:46:21 【问题描述】:是否可以编写查询以使用相同的“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 前行。谢谢你的回答
【问题讨论】:
【参考方案1】:不,你不应该这样做。如果没有ORDER BY
子句,您不应该依赖从查询到查询的结果顺序相同。它在测试期间可能工作得很好,但顺序是不确定的,以后可能会中断。使用 order by。
SELECT * FROM table1 ORDER BY id LIMIT 5
顺便说一句,获取最后3行的另一种方法是颠倒顺序,选择前三行:
SELECT * FROM table1 ORDER BY id DESC LIMIT 3
即使结果集中的行数不总是 8,这也将始终有效。
【讨论】:
确实如此。如果结果没有排序,则向后没有意义。 所以 order by 在限制之前适用? @faya:在这种简单的情况下,是的。 是否可以在同一查询中使用 group by 和 order by..?【参考方案2】:假设我们有一个包含时间列的表,并且您想要最后 5 个条目,但您希望它们按 asc 顺序返回给您,而不是 desc,您就是这样做的:
select * from ( select * from `table` order by `time` desc limit 5 ) t order by `time` asc
【讨论】:
【参考方案3】:是的,您可以交换这两个查询
select * from table limit 5, 5
select * from table limit 0, 5
【讨论】:
【参考方案4】:这种方式比较容易
SELECT doc_id,serial_number,status FROM date_time ORDER BY date_time DESC LIMIT 0,1;
【讨论】:
以上是关于MySQL降序限制的主要内容,如果未能解决你的问题,请参考以下文章