大数据bug-sql(三:添加单表限制)

一:错误sql。

需求:求出在xxx中存在,但是在vvv中不存在的数据。
前提:xxx是不分区,vvv是分区。

select 
*
from XXX as a
left join vvv as b
on a.row_id=b.row_id
where b.row_id is null and b.p_dt='2022-03-14' 

结果如下:
在这里插入图片描述

二:正确sql。

select 
*
from AAA as a
left join 
(
select * 
from vvv as a
where a.p_dt='2022-03-14') as b
on a.row_id=b.row_id
where b.row_id is null 

结果
在这里插入图片描述

三:原因。

我们在使用多表关联的时候,对某一张表进行限制,应该将限制放在表内,如果放在表外进行限制,在执行完left join的时候,进行过滤,会将b表中a.p_dt=‘2022-03-14’ 留下来,将空值全部过滤掉,变成了inner join。

你可能感兴趣的:(sql,sql,bug,数据库)