发现统计只是分组统计,没达到所有行统计,而且统计的数据不正确
于是我写了下面的语句来查看结果,加多了一个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等统计函数是不正确的
想要计算一段文本的hash摘要(md5和sha256)
bob@ubuntu:~$ echo 123456 | md5
sum
f447b20a7fcbf53a5d5be013ea0b15af -
bob@ubuntu:~$ echo 123456 | sha
sum
-a 256
e150a1ec81e8e93e1eae2c3a77e66ec6dbd6a3b460f89c1d08aecf422ee401a0 -
bob@ubuntu:~$
算出来和使用在线工具算出来的不一样http://tools.bugscaner.com/cryptosha256/
原因是echo默认会在字符串末尾追加
群
表
(team)和 群标签关系
表
(team_tag_relation)
关系:一个群对应多个标签
team
表
中有群人数字段,当left
join
群标签关系
表
时
,如果某个群拥有3个标签,则该群的数据会出现3次,导致进行
sum
(群人数)会
sum
多次,即群人数会翻3倍,造成数据错误。
解决方案:
避免直接将两个
表
进行left
join
先处理群标签关系
表
(team_tag_relation),将多条数据聚合为一条,sql如下:
select
team_id,
GROUP_CONCAT(t
在
MySQL
中,当进行一对多的数据
表
关联查询
时
,有
时
会导致结果中出现重复数据的情况。这是由于多个关联的子
表
记录与主
表
记录进行了笛卡尔积,从而产生了重复的结果。上述查询将使用GROUP BY子句按照主
表
的id进行分组,并使用GROUP_CONCAT函数将多个子
表
记录合并为一个字符串。上述查询将使用子查询获取子
表
的数据,并通过 GROUP_CONCAT 函数将多个子
表
记录合并为一个字符串。上述查询中,子查询通过使用DISTINCT关键字去除了子
表
中的重复数据,然后与主
表
进行关联。
你得到了笛卡尔结果。由于您没有显示每个“ID”有多少“1”,“2”或“3”计数,因此只需从这些
表
中自行选择一个()。由于没有group by的总和将始终产生一条记录,因此您不需要任何连接,它将为每个摘要提取一条记录的结果,而不会产生笛卡尔结果。由于您的原始查询是LEFT
JOIN
到其他查询,因此ID已经存在于
表
1中,因此为什么在每个子
表
中重新查询计数不同。SELECT
Sum
ForTable1.x1...
,countDistinct(a.imei) uv
,countDistinct(a.user_id) uv2
,countDistinct(case when a.click='是' then a.imei end) pv_click
mysql
列存储引擎-多
表
left
Join
查询结果错误-记录关联ISSUE: https://github.com/stoneatom/stonedb/issues/925
有几个
问题
... bhds_mileage和之间的部分笛卡尔积(叉积)bhds_timecard,因为一个
表
中的每个明细行(组内)将与另一
表
中的明细行“交叉连接”。发生在GROUP BY操作折叠行并计算
SUM
之前。这就解释了为什么您看到“膨胀的”值。解决方法是在内联视图中计算至少一个
SUM
()聚合...像第一个查询中的一个一样完成
SUM
()/ GROUP BY()。为了清楚起见,您可以对两个原始查...
今天写项目
时
,需要将一个车辆的所有费用做汇总处理,包括加油费和保险事故等等
刚开始使用左连接,然后对加油
表
和保险
表
的费用一栏用
SUM
进行处理,代码如下:
select b.id,b.plate_number,
SUM
( bx.pay_money),
SUM
(o.money)
from base b
left
join
baoxian bx
on b.id=b.
单
表
的唯一查询用:distinct
多
表
的唯一查询用:group by –但是注意下面的坑
参考: https://blog.csdn.net/lkforce/article/details/52598155
GROUP BY 和 ORDER BY一起使用
时
,ORDER BY要在GROUP BY的后面。
写的顺序:...
多
表
关联一对多查询取最新的一条数据,数据出现重复
由于历史原因,
表
结构设计不合理;产品告诉我说需要导出客户信息数据,需要导出客户的 所属行业,纳税性质 数据;但是这两个字段却在订单
表
里面,每次客户下单都会要求客户填写;由此可知,客户数据和订单数据是一对多的关系;那这样的话,
问题
就来了,我到底以订单中的哪一条数据为准呢?经过协商后一致同意...
SELECTGROUP_CONCAT( DISTINCT fa.nickname ),GROUP_CONCAT( DISTINCT ev.facility_id ),CONVERT (
SUM
( ev.income ),DECIMAL ( 10, 2 )) AS su,COUNT( ev.income ),GROUP_CONCAT( ev.income )FROMevery_day_income A...
<br /><br />
Join
关联结果不
正确
问题
<br />By Katana<br /> <br />
Join
命令是一个非常高效的命令,大家都用的非常多,但是有
时
候join的结果会有些
问题
,很多同事问过
Join
命令为什么有
时
候不能
正确
关联出数据,经过研究发现如下:<br /> 大家都知道
join
之前是需要sort的,先看一个
join
实例:<br /> 文件1:1.txt<br /> 1.txt<br /> 1002547 14<br /> 1