前言
今天同事在同步完订单数据后,由于订单总金额和数据源的总金额存在差异,选择使用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);
- 1
所以总金额为10*100=1000
。