我在这里遇到了一些非常意外的行为 - mysql似乎以一种我无法解释的方式做错了。 TLDR;我在子查询中选择double(7, 4)
字段的总和,插入到具有相同数据类型的另一个表的列中,但插入步骤因某种原因而弄乱了我的数学。这就是我所拥有的:
mysql> create temporary table table_1 (amount double(7, 4) not null);
mysql> create temporary table table_2 (amount double(7, 4) not null);
mysql> insert into table_1 (amount) values (-500.00);
mysql> insert into table_1 (amount) values (-500.00);
mysql> insert into table_1 (amount) values (-500.00);
mysql> select sum(amount) from table_1;
+---------------+
| sum(amount) |
+---------------+
| -1500.00|
+---------------+
mysql> insert into table_2 select sum(amount) from table_1;
mysql> select * from table_2;
+-----------------+
| amount |
+-----------------+
| -999.9999 |
+-----------------+
这到底是怎么回事?我使用的是版本5.5.46-0 + deb8u1。
编辑:将table_2.amount更改为float列修复了问题(我上次查询得到-1500)