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降序限制的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 限制和偏移分页不按降序工作

mysql常用基础操作语法--对数据排序和限制结果数量的条件查询命令行模式

李老师 mongoDB中 字符类型的字段 有大小长度限制吗

mysql sql知识总结

oracle篇 之 排序限制查询行

MySQL进阶语句