原因

not in相当于all,如果 not in 后面跟的是子查询,子查询中只要包含一个 null 的返回值,则会造成 整个 not in 字句返回空值,查询不会返回任何结果。
in 相当于 any ,可以处理子查询中返回null的情况,返回正确的结果。

解决方案

为防止not in返回空值,可以在子查询的Where 语句后筛掉为空的记录,例如:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
select * from users u 
where u.unionid not in 
    (SELECT su.s_unionid 
    from   ninth_studio.staff_users su 
    where su.s_unionid is not null)
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄