gpt4 book ai didi

mysql - INSERT...SELECT 负 double 值损坏

转载 作者:行者123 更新时间:2023-11-29 19:06:26 25 4
gpt4 key购买 nike

我在这里遇到了一些非常意外的行为 - mysql 似乎以一种我无法解释的方式做错了数学。太长了;我正在子查询中选择一个 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 更改为浮点列可以解决问题(最后一个查询得到 -1500)

最佳答案

刚刚发现答案heredecimal(7, 4) 声明截断给定值包括小数点后的数字-999.9999 只是该列可以存储的最大值。

关于mysql - INSERT...SELECT 负 double 值损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43458486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com