当left 或 inner join 关联条件 需要查另外一个表中字段,则可以使用下面的方法。
下面语法是错误写法,运行不会通过。
sql
select t1.* from t1
left join t2 on t1.acct_no = t2.acct_no
and t1.code in (select type1 from tt)
下面是正确的实现思路,提前在主表中,做好打标字段处理。
sql
select t1.*
from (
select
*,
case when tt.type1 is not null then 1 else 0 end as flag
from t1
left join tt
on code = type1
)t1
left join t2 on t1.acct_no = t2.acct_no
and flag = 1