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
,以获取大量数据)。这几天不疼,内存也很便宜。

谢谢你的尝试,我理解这个想法,但输出与问题中要求的不匹配。我想你误解了我的意图。谢谢你的尝试,我理解这个想法,但输出与问题中要求的不匹配。我想你误解了我的意图。