select distinct 子查询含case when,查询结果null值改变

客户col_a=3,存在表mytable中,并不存在表test_table中,查询加distinct和不加distinct,值有差异;求解答原理,造成差异的原因?

脚本一:跑出来值是2

select distinct type
from mytable a
left join (select col_name,
                  case when col_value like '%1%' then '1'
                  else '2' end type 
                  from test_table) b on b.col_name=a.col_a
where col_a=3;
 

脚本二:跑出来值是null

select  type
from mytable a
left join (select col_name,
                  case when col_value like '%1%' then '1'
                  else '2' end type 
                  from test_table) b on b.col_name=a.col_a
where col_a=3;
 

 

不是要解决方案,可解决的方案不少;是想搞明白造成差异的原因