我在使用mybatis拿出数据后,发现和workbench执行sql的数据不一样,通过mybatis的debug打印出来的语句也和workbench一致,对此我就很疑惑了,然后我直接使用控制台运行sql,发现跟使用mybatis的结果一致。
问题就是:相同sql为什么在workbench和控制台运行结果不一样?
下面是我测试用的死sql,主要是分组获取账户,类型对应的总金额。前面的SQL_CALC_FOUND_ROWS和最后的FOUND_ROWS()是获取分页总数用的,不用管。
select SQL_CALC_FOUND_ROWS * from
(select account_from account_name,ttype,sum(net_income) total_income
from fil_account_transfer where ttype in ('send','burn-fee','miner-fee','burn')
and account_from = 'f0700033'
group by account_from,ttype
union
select account_to account_name,ttype,sum(net_income) total_income
from fil_account_transfer where ttype in ('receive','reward')
and account_to = 'f0700033'
group by account_to,ttype) a
order by account_name limit 0,10;
SELECT FOUND_ROWS() as total
在workbench里的结果:
在控制运行的结果:
通过对比发现:它们的总金额并不一样,但有部分相同。
对此我猜测过会不会跟我设置的字段类型有关。该字段设置为varchar,在字符串数字相加时有问题?或者是workbench自身的问题?
希望有懂的人能帮我解答一下,谢谢!
肯定有影响的,其他字段都显示正常,就是你这个金额字段,而且值还是计算得到的结果,并不是直接取的数据。
相加的字段类型要用int,float等类型,数值才能相加。
你好,我试过字符串数字是可以sum相加的。我的单字段数字长度可能在22位以内,如果使用decimal或者bigint会不会有缺点
问题出在我当时拷贝了一份数据库,查的是我老的那个库的数据。。。粗心啊,查询语句没有加数据库名. 导致查的还是以前哪个