数据库捞取不相等数据情况
select * from a
left join b on a.id =b.id
where a.name != b.name;
以上sql,粗看没啥毛病,实际分析数据,你会发现b.name或者a.name字段如果为空值,你讲捞取不出来。
修改如下:
select * from a
left join b on a.id =b.id
where 1=1
or ( a.name != b.name and a.name is not null and b.name is not null)
or (a.name is not null and b.name is null)
or (b.name is not null and a.name is null);
生产中,遇见这种业务需要特殊优化,执行效率实在是差,本身就符合索引。
浙公网安备 33010602011771号