是否可以将LIMIT与子查询结果一起使用?

时间:2016-12-26 22:26:45

标签: mysql sql

当需要有序集的最后几行时,通常会创建派生表并重新排序。例如,要使用自动递增的id返回表的最后3个元素:

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 3
) t ORDER BY t.id

由于LIMIT也可以有偏移量,如果我们事先通过此查询知道行数(比如10),则可以获得相同的结果:

SELECT * FROM table ORDER BY id LIMIT 3 OFFSET 7

是否可以运行子查询到count(*)表并使用该数字动态构建LIMIT

SELECT * FROM table ORDER BY id LIMIT 3 OFFSET [ select count() -3 ]

1 个答案:

答案 0 :(得分:4)

不,无法指定动态偏移量。

使用子查询的原始查询是最简单的方法。