MySQL SUM多个值

时间:2014-01-10 22:14:49

标签: mysql sum

我的MySQL查询有问题。我有一行:

id, value(float), value2(enum)
1         , 100,   -1
1         , 100,   1
2         , 100,   -1
3         , 100,   1

我需要输出:

1, 0
2, -100
3, 100

不要工作

SELECT id, SUM(value*value2) as vysledek
FROM table
group by id

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

此处的问题是您使用的是enum类型。转换为数字时,enum将根据其索引进行转换。

如果您的字段为enum('1', '-1'),则1将转换为1-1将转换为2。为什么?因为那是enum字段中的索引。

我建议你在这里使用数字类型而不是enum。它可以为您节省麻烦并使您的查询更加出色。

如果您必须将其保留为enum,那么您可以通过执行此操作将其“转换”为数字:

SELECT id, SUM(value * CAST(CAST(value2 AS CHAR) AS SIGNED))

你需要先把它作为一个字符串,然后作为一个数字。