我对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
此处。这样可以节省您的麻烦,并使查询更好。
如果必须将其保留为enum
,则可以通过执行以下操作将其“投射”为数字:
SELECT id, SUM(value * CAST(CAST(value2 AS CHAR) AS SIGNED))
您需要先将其转换为字符串,然后转换为数字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句