mysql踩坑之limit与sum函数混合使用问题详解
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,前言今天同事在同步完订单数据后,由于订单总金额和数据源的总金额存在差异,选择使用LIMIT和SUM()函数计算当前分页的总金额来和对方比较特定订单的总金额,却发现计算出来的金额并不是分页的订单总金额,
千家信息网最后更新 2026年11月01日mysql踩坑之limit与sum函数混合使用问题详解
前言
今天同事在同步完订单数据后,由于订单总金额和数据源的总金额存在差异,选择使用LIMIT和SUM()函数计算当前分页的总金额来和对方比较特定订单的总金额,却发现计算出来的金额并不是分页的订单总金额,而是所有订单的总金额。
数据库版本为mysql 5.7,下面会用一个示例复盘遇到的问题。
问题复盘
本次复盘会用一个很简单的订单表作为示例。
数据准备
订单表建表语句如下(这里偷懒了,使用了自增ID,实际开发中不建议使用自增ID作为订单ID)
CREATE TABLE `order` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单ID', `amount` decimal(10,2) NOT NULL COMMENT '订单金额', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
插入金额为100的SQL如下(执行10次即可)
INSERT INTO `order`(`amount`) VALUES (100);
所以总金额为10*100=1000。
问题SQL
使用limit对数据进行分页查询,同时使用sum()函数计算出当前分页的总金额
SELECT SUM(`amount`)FROM `order`ORDER BY `id`LIMIT 5;
前面也提到了运行的结果,期待的结果应该为5*100=500,然而实际运行的结果却为1000.00(带有小数点是因为数据类型)
问题排查
其实如果对SELECT语句执行顺序有一定了解的朋友可以很快确定为什么返回的结果为所有的订单总金额?下面我会就问题SQL的执行书序来分析问题:
- FROM:FROM子句是最先执行的,确定了查询的是order这张表
- SELECT:SELECT子句是第二个执行的子句,同时SUM()函数也在此时执行了。
- ORDER BY:ORDER BY子句是第三个执行的子句,其处理的结果只有一个,就是订单总金额
- LIMIT:LIMIT子句是最后执行的,此时结果集中只有一个结果(订单总金额)
补充内容
这里补充一下SELECT语句执行顺序
- FROM
- ON
JOIN - WHERE
- GROUP BY
- HAVING
- SELECT
- DISTINCT
- ORDER BY
- LIMIT
解决办法
遇到需要统计分页数据时(除了SUM()函数外,常见的COUNT()、AVG()、MAX()、MIN()函数也存在这个问题),可以选择使用子查询来处理(PS:这里不考虑内存计算,针对的是使用数据库解决这个问题)。上面的问题解决方案如下:
SELECT SUM(o.amount)FROM (SELECT `amount` FROM `order` ORDER BY `id` LIMIT 5) AS o;
运行的返回值为500.00。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
金额
订单
问题
数据
结果
子句
函数
内容
语句
查询
运行
只有
同时
实际
就是
数据库
示例
顺序
处理
学习
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华服互联网科技靠谱吗
高科技互联网
互联网科技公司税收优惠
互联网金融科技平台
润盈互联网科技
长亮科技 互联网金融
互联网金融和金融科技
互联网巨头投资的硬核科技
南山科技园互联网公司有哪些
速维有品互联网信息科技(苏州)有限公司
中国互联网十大科技股排名
四川慕妮娅互联网科技有限公司
怎样加入科技互联网
互联网第三次科技革命特征
广州富喜互联网络科技
21世纪互联网科技成就
互联网科技股为什么大涨
新氧科技和美国互联网有关系吗
广州三三互联网科技有限公司
杭州融税互联网科技有限公司
有格互联网科技
科技赋能下的互联网金融
深圳互联网络科技有限公司
智网互联网科技
成都互联网科技公司
互联网养老 桔豆科技
互联网企业和科技型企业
科技互联网的核心竞争力
本届互联网大会上的黑科技
珠海东科互联网科技有限公司