2016-12-26 73 views
1

当需要排序集合的最后一行时,通常会创建派生表格并重新排序。例如,为了与自动返回表的最后3个元素递增id是否可以将LIMIT与子查询结果一起使用?

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

不,“LIMIT”参数必须是文字,它们不能是表达式。如果您需要动态计算限制,则必须在存储过程的准备好的查询中执行此操作,或者使用客户端语言执行此操作。 – Barmar

+0

我在这里想的很好,但是你可能可以使用'HAVING'和COUNT()'。尽管如此,我不得不测试这个理论。 –

+0

可能的重复http://stackoverflow.com/questions/41149708/using-as-to-avoid-same-query-mysql/41150070#41150070 –

回答

4

不,不可能指定动态偏移量。

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

相关问题