MySQL限制从头到尾的查询

标签 mysql

假设我有一个包含两列的 MySQL 表,并且我执行(再简单不过了)查询

select * from test order by prio asc, datum asc

这给了我预期的结果:

datum      | prio
2017-07-02 | 1 
2017-07-09 | 2
2017-06-11 | 3
2017-06-01 | 4
2017-06-18 | 5
2017-06-25 | 6

现在,我想将我的结果限制为只有最后 3 行,避免做带有偏移量的事情,因为那样我必须计算行数,所以我知道这是可行的:

select * from test order by prio asc, datum asc limit 3,3

但是有没有什么技巧,我可以做类似的事情:

select * from test order by prio asc, datum asc limit -3  

我知道这会失败。

谢谢

最佳答案

尝试下面的查询。

SELECT * FROM(
    SELECT * FROM test ORDER BY prio DESC LIMIT 0,3
) t ORDER BY prio ASC, datum asc;

子查询将根据优先级降序排列并返回最后 3 条记录。外部查询将再次按升序对这些优先级进行排序,然后按数据排序。

希望对您有所帮助。

关于MySQL限制从头到尾的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45081019/

相关文章:

PHP 函数从 MySQL 数据库中进行选择并将结果传递到数组

mysql - SpringBoot-MySQL 或 ExpressJS-MongoDB 哪一个最适合构建在线书店的 REST API?

PHP Mysql 查询插入

python - 我的 Flask python 应用程序需要进行哪些更改才能使用 MySQL 数据库?

php - 验证数据库日期和 JQuery 日期

mysql - 如何使用 Ruby ActiveRecord 映射数据库 View ?

mysql - mysql 中的交叉表

php - 从 PHP 中的 mySQL 表填充下拉框

mysql - 帮助使用 JOIN 搜索 MYSQL 数据库 - 可能的自 JOIN?

Python 多处理传递数据库游标对象