mysql踩坑之limit与sum函数混合使用问题详解
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,前言今天同事在同步完订单数据后,由于订单总金额和数据源的总金额存在差异,选择使用LIMIT和SUM()函数计算当前分页的总金额来和对方比较特定订单的总金额,却发现计算出来的金额并不是分页的订单总金额,
千家信息网最后更新 2025年11月09日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安全错误
数据库的锁怎样保障安全
极速赛车数据库
sql数据库中的触发器
怎么查虚拟主机和服务器
高级网络安全管理师一般多少分过
为什么易语言读数据库错
哪个学校有软件开发
组织网络安全演练
lolc9哪个服务器
海康服务器硬件
鸡泽企业建网站需要服务器吗
网络安全领导小组专题会议
网络安全领导机构是哪个部门
金铲铲之战服务器维护中怎么解决
胖熊数据库图片
druid连接达梦数据库
烈焰传奇手游数据库破解
学而思网校软件开发岗怎么样
中兴服务器系统管理
网络安全法律是哪些
dcs上位机下位机软件开发
辽宁专升本难吗 学软件开发的
阿里云服务器外网无法访问
1151针最强服务器cpu
asp 同时打开两数据库
网络安全法要求应当要求用户提供
服务器 管理卡片模板
学而思网校软件开发岗怎么样
丝路互联网电子科技有限公司
教育网络安全专题培训交流
信息网络技术与新媒体