首页 > 解决方案 > 可以使用子查询在 MySql 查询中分配 LIMIT 值吗?

问题描述

我需要在没有顺序的情况下提取表的最后一行。我试试这个但不起作用:

SELECT * 
FROM contabilidad.emp001_series
LIMIT (SELECT COUNT(*)-10 AS TOTAL FROM contabilidad.emp001_series)

我需要自然顺序的结果,不能使用 ORDER BY

标签: mysqlsqldatabaseselectlimit

解决方案


不可以。不允许使用子查询。

此外,SQL 表中不存在“自然”顺序。SQL 表表示无序集。

最好的办法是进行反向排序并从第 11 行开始:

select s.*
from contabilidad.emp001_series s
order by id desc
limit 999999999 offset 10;

如果你想要一组任意的 id,你也可以使用:

select s.*
from contabilidad.emp001_series s
where id < (select s2.id
            from contabilidad.emp001_series s2
            order by s2.id desc
            limit 1 offset 10
           );

这两个都假设您有一个指定排序的某种列。


推荐阅读