我遇到查询时,一个select语句因为数据类型转换,导致整个数据库当掉的问题,盼解惑,谢谢。
 
我的数据库是mysql 5.1.57
表:  report_indicator
字段:estimate_value VARCHAR(4000)
问题SQL:
SELECT * FROM 
(SELECT t1.`stock_code`,AVG(t1.estimate_value) estimate_value
FROM `report_indicator` t1
WHERE  t1.publish_at>=1374718000000 AND t1.publish_at<1375286400000
AND t1.estimate_cycle_value IS NOT NULL
AND t1.TYPE=18
GROUP BY stock_code) t;
数据库立刻当掉。
 
可是如果只执行内部查询的SQL:
SELECT t1.`stock_code`,AVG(t1.estimate_value) val
FROM `report_indicator` t1
WHERE  t1.publish_at>=1374718000000 AND t1.publish_at<1375286400000
AND t1.estimate_cycle_value IS NOT NULL
AND t1.TYPE=18
GROUP BY stock_code;
没有问题。
 
后来发现是estimate_value字段的问题,只要外部的查询字段包括 estimate_value,数据库立刻当掉,
但是如果将AVG(t1.estimate_value)改成AVG(t1.estimate_value/1),整个查询就没问题了,我猜测应该是数据类型转换的问题,但是找不到理论支持,在网上也没找到相关资料,期盼解惑,谢谢。