Mysql 当遇到溢出Int16时,设置累积值
我的累计输入值以小整数开始使用。Mysql 当遇到溢出Int16时,设置累积值,mysql,overflow,bit-manipulation,Mysql,Overflow,Bit Manipulation,我的累计输入值以小整数开始使用。 我从Access数据库中读取这些值,并将它们聚合到MySQL数据库中 现在我面对的是smallint类型的输入值是累积的,因此总是在增加 Input Required output --------------------------------- 0 0 10000 10000 32000 32000 -31536 34000
我从Access数据库中读取这些值,并将它们聚合到MySQL数据库中 现在我面对的是smallint类型的输入值是累积的,因此总是在增加
Input Required output
---------------------------------
0 0
10000 10000
32000 32000
-31536 34000 //overflow in the input
-11536 54000
8464 74000
我通过将原始数据插入黑洞表来处理这些值,在黑洞的触发器中,我在将数据插入实际表之前升级数据
我知道如何存储以前的输入和输出,或者如果没有,如何选择最新(和最高)的插入值。但是处理溢出的最简单/最快方法是什么,这样我就得到了正确的输出。如果您有一个名为
test
的表,主键名为id
,列名为value
,那么只需执行以下操作:
SELECT
id,
test.value,
(SELECT SUM(value) FROM test AS a WHERE a.id <= test.id) as output
FROM test;
希望这有帮助
如果不起作用,只需将数据转换为
INT
(或BIGINT
,以获取大量数据)。现在它不会造成伤害,内存也很便宜。如果您有一个名为test
的表,主键名为id
,列名为value
,请执行以下操作:
SELECT
id,
test.value,
(SELECT SUM(value) FROM test AS a WHERE a.id <= test.id) as output
FROM test;
希望这有帮助
如果不起作用,只需将数据转换为
INT
(或BIGINT
,以获取大量数据)。这几天不疼,内存也很便宜。谢谢你的尝试,我理解这个想法,但输出与问题中要求的不匹配。我想你误解了我的意图。谢谢你的尝试,我理解这个想法,但输出与问题中要求的不匹配。我想你误解了我的意图。