mysql - 如何从偏移量到表末尾求和()?

标签 mysql sum limit

如果 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 BYLIMIT 然后应用于该聚合记录,而不是 transactions 的记录。

关于mysql - 如何从偏移量到表末尾求和()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2623853/

相关文章:

php - 另一个查询中的 Smarty 查询计数

matlab - 对行求和,但删除每行中的不同项

R ggplot2 scale_y_continuous : Combining breaks & limits

sql - 按表中的分组记录运行总计

mysql - 优化分页的 DISTINCT/LIMIT MySQL 查询

MySQL 选择具有相同条件值的前几行

php - 防止在浏览器刷新和浏览器启动时输入数据

php - 无法在 Joomla! 中修改外部数据库3.0.3。使用 PHP 请求

php - 限制 Joomla 中每个用户 ID 24 小时的提交数量

MySQL查询根据按月分组的激活日期统计累计用户数