sql联表查询数据始终对不上

问题遇到的现象和发生背景

需求要求加单据类型和问题类型作为筛选条件,这就肯定要联表,但是我看之前的mysql里面的表从没联表查询过,我尝试之后数据始终对不上,前面的之前的,后面的就是我联表查询

用代码块功能插入代码,请勿粘贴截图

img

img

运行结果及报错内容

不知道是我SQL的错误,还是本身数据的错误

我的解答思路和尝试过的方法

我猜是数据错误,但是联表去重咱也不会啊

我想要达到的结果

查询出来的数据一样

你的sql结果都只用到了第一张表中的数据,所以关联后边几张表干什么呢

img

1、两个语句中的 distinct 关键字是多余的
2、如果你不了解表连接,暂时也没有时间去学习了解的话,建议用exists子句放在where条件里面处理过滤条件,并不一定要进行表关联,这个入手对于你来讲可能要简单一点
3、这个是你SQL表连接的问题,不是数据问题,还有就是你所说的 单据类型和问题类型作为筛选条件,在第二个SQL并未体现,而且你用的左连接,并不一定适合你的具体需求

用user_id 去left join的表里面同一user_id有多个所以会导致前面同一user_id sum()的结果就会膨胀, 所以要么先把主表里面的sum()值计算好 再去关联过滤 select
from (
select user_id,sum(completed_amount) completed_amount
from handle_bill_data
where dr = 0
group by user_id
order by completed_amount desc
limit 0,40
)a
left join b
left join c
left join d
或者 关联前后user_id去重
select a.user_id,sum(completed_amount)
from (
select user_id,completed_amount
from handle_bill_data
where dr = 0
order by completed_amount desc
limit 0,40
)a
left join (select distinct user_id from 表 ) b
left join c
left join d