MySQL对多个值求和

MySQL对多个值求和,mysql,sum,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 谢谢您的帮助。这里的问题是您使用的是e

我对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

谢谢您的帮助。

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

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

我建议您在此处使用数字类型而不是
enum
。它将为您省去麻烦,并使您的查询变得更加友好

如果必须将其保留为
枚举
,则可以通过执行以下操作将其“强制转换”为数字:

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

您需要先将其转换为字符串,然后再转换为数字。

那么,该查询会输出什么?因为它对我有用:表名
table
可能是错误的,我猜它是一个保留字。数据库中的字段是什么类型的?它们是
int
还是
varchar
(或其他东西)?表:s30.postimg.org/swbxhqiup/img1.png结果:s30.postimg.org/56mht1khd/result.png、float和enum是columns@JakubKu切拉:这就是问题所在。
枚举
。您将其视为
int
,但它不是。我建议不要使用
enum
字段。感谢您帮助解决我的问题。