mysql8.0版本 sum() NULL group by問題

昨天專門找了很多資料,想解決sum() 結果中帶有null的問題,但昨晚最後一些列的測試發現另外的問題;

表結構如下所示,id是int類型,name是varchar類型的,pct是float類型的

SELECT `name`,sum(pct) FROM `test` GROUP BY `name`;
SELECT `id`,sum(pct) FROM `test` GROUP BY `id`;

按如上的兩個語句執行,結果如下所示

    注意看下第二行的  sum值,第一個結果是0.9354,第二個結果是0.8098,而第二個結果纔是正確的,第一個和第二個的區別就是group by 的字段不一樣,一個是varchar類型的漢字,一個是int類型的數字id,然後這就造成了最終的結果不一樣;

  本身簡單的sum() 會自動過濾掉null值不參與計算的,但是在sum()的同時加上group by的時候,就出現問題了

    這種sum()結果中有null的數據,通過簡單的ifnull()確實可以規避這種問題,但是不停的測試了幾輪後發現,這個竟然是mysql8.0版本的bug,在5.7版本上覆現不了這個問題,看看mysql啥時候能修復這個bug了,哎,所有的程序都要重新檢查一遍了。大家也注意下吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章