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等統計函式是不正確的