1. 程式人生 > >mysql關聯表字段做運算出錯

mysql關聯表字段做運算出錯

產生原因?

mysql 關聯表不同表做資料統計的時候 ,可能會遇到統計資料出錯。例如:欄位1 - 欄位1 。這個本來就是很正常的運算,如果放在同一張表中會報錯,那就只可能是where條件的兩個非負欄位相減得到一個負數導致的報錯。不過今天不討論這個問題,主要討論的是兩個關聯的表運算導致資料出錯。

瞭解mysql的都知道, 兩張表關聯查詢(特別是外連線查詢)且主表關聯不到從表的資料時,那麼相關的欄位列就會預設為 null (除非在關聯後的where條件過濾掉)。如果不做處理直接:表1.欄位1 - 表2.欄位1( 該欄位出現null ),你會發現統計出來的資料其實是不準確的;可以做如下測試:

select (10 - null) ; // null

得到的是null ; mysql 不同PHP的弱型別會強制轉化為整型

解決

用mysql自帶函式 IFNULL( ) 可以方便解決:

(total_money - IFNULL(valid_money,0) - IFNULL(invalid_money , 0)) as follow_money

通過簡單處理就可以進行方便的運算