但是我们发现,这个数据是错误的
于是我想到了用 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等统计函数是不正确的