我有累积输入值,以小点开始生活 我从Access数据库中读取这些值,并将它们聚合到MySQL数据库中。
现在我面临着累积类型smallint的输入值,因此总是在增加。
Input Required output
---------------------------------
0 0
10000 10000
32000 32000
-31536 34000 //overflow in the input
-11536 54000
8464 74000
我通过将原始数据插入黑洞表并在黑洞的触发器中处理这些值,然后在将数据插入实际表之前升级数据。
我知道如何存储先前的输入和输出,或者如果没有,则如何选择最新(和最高)的插入值。
但是什么是处理溢出的最简单/最快的方法,所以我得到了正确的输出。
答案 0 :(得分:-1)
假设您有一个名为test
的表,其主键名为id
,该列名为value
,那么就这样做:
SELECT
id,
test.value,
(SELECT SUM(value) FROM test AS a WHERE a.id <= test.id) as output
FROM test;
这将是输出:
------------------------
| id | value | output |
------------------------
| 1 | 10000 | 10000 |
| 2 | 32000 | 42000 |
| 3 | -31536 | 10464 |
| 4 | -11536 | -1072 |
| 5 | 8464 | 7392 |
------------------------
希望这有帮助。
如果它不起作用,只需将您的数据转换为INT
(或BIGINT
以获取大量数据)。它没有伤害,而且记忆力很便宜。