我的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
感谢您的帮助。
答案 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))
你需要先把它作为一个字符串,然后作为一个数字。