如果 SELECT SUM(amount) FROM transactions ORDER BY order LIMIT 0, 50
对表中前 50 条记录的 amount
字段求和,如何求和所有记录前 50 个之后?换句话说,我想执行类似 SELECT SUM(amount) from transactions ORDER BY order LIMIT 50, *
的操作,但这不起作用。
最佳答案
SELECT SUM(amount)
FROM (
SELECT amount
FROM transactions
ORDER BY
order
LIMIT 50, 1000000000000
) q
请注意您的原始查询:
SELECT SUM(amount)
FROM transactions
ORDER BY
order
LIMIT 0, 50
并不像您认为的那样。它是这个的同义词:
SELECT a_sum, order
FROM (
SELECT SUM(amount) AS a_sum, order
FROM transactions
) q
ORDER BY
order
LIMIT 0, 50
内部查询(通常在任何其他引擎中会失败,但由于其 GROUP BY
扩展语法而在 MySQL
中工作)仅返回 1
记录。
ORDER BY
和 LIMIT
然后应用于该聚合记录,而不是 transactions
的记录。
关于mysql - 如何从偏移量到表末尾求和()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623853/