1. 程式人生 > >mysql sum join 多表統計求和時不正確的問題

mysql sum join 多表統計求和時不正確的問題

但是我們發現,這個資料是錯誤的

於是我想到了用 distinct  但是發現用不了

於是又想到 group by

出來的結果是下面這樣的


發現統計只是分組統計,沒達到所有行統計,而且統計的資料不正確


於是我寫了下面的語句來檢視結果,加多了一個count函式檢視

    SELECT s.oid,p.oid  AS poid,  SUM( priceCount) AS count_price, COUNT(p.oid) FROM mobile_shops_orders AS s
    LEFT JOIN mobile_shops_products AS p ON p.oid = s.oid
    WHERE s.userid =  '2'
    GROUP BY poid

 

出來的結果是下面的,一看就知道是什麼原因了
 
oid     poid     count_price     COUNT(p.oid)
2015031809153611521     2015031809153611521     664.00     2
2015031809155386138     2015031809155386138     40.00     1

 

最後我們的語句應該是下面這個的,join 後面這個是重點,意思是返回不重複的資料

SELECT s.oid, p.oid AS poid, SUM(priceCount) AS count_price

FROM mobile_shops_orders AS s

LEFT JOIN  (select distinct  oid from  mobile_shops_products)   AS  p ON p.oid = s.oid WHERE s.userid =  '2’


oid     poid     count_price
2015031809153611521     2015031809153611521     372.00


這裡有幾個要注意的問題,一是,group by 是用於分組統計,如果要所有行統計不能用他

二需要使用子句先排除重複行,否則也會出得統計不正確的問題

還有,看網上說 返回 null 時sum等統計函式是不正確的