这是我用来重现该问题的表定义:create table test_sum_type ( kind char(1) not null, n tinyint not null);测试数据:+------+---+ | kind | n | +------+---+ | A | 1 | | B | 1 | | A | 2 | +------+---+ 如您所见,Decimal当我使用时,结果列是a sum。我已经研究了MySQLdb的源代码,只有两种字段类型设置为Decimal默认转换为:DECIMAL和NEWDECIMAL。这可能是什么原因?有什么方法可以检查特定查询中使用的某些临时表的架构吗?
1 回答

茅侃侃
TA贡献1842条经验 获得超21个赞
这是设计使然的MySql。
GROUP BY(聚合)函数
SUM()和AVG()函数为精确值参数(整数或DECIMAL)返回DECIMAL值,为近似值参数(FLOAT或DOUBLE)返回DOUBLE值。(在MySQL 5.0.3之前,SUM()和AVG()对于所有数字参数都返回DOUBLE。)
如果您需要返回,INT则返回CAST它。
SELECT kind, CAST(SUM(n) AS SIGNED) n
FROM table1
GROUP BY kind
添加回答
举报
0/150
提交
取消