当需要有序集的最后几行时,通常会创建派生表并重新排序。例如,要使用自动递增的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 ]
答案 0 :(得分:4)
不,无法指定动态偏移量。
使用子查询的原始查询是最简单的方法。