o(* ̄︶ ̄*)o

  博客园  :: 首页  ::  :: 联系 :: 订阅 订阅  :: 管理

数据库捞取不相等数据情况

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);

生产中,遇见这种业务需要特殊优化,执行效率实在是差,本身就符合索引。

posted on 2022-03-07 22:39  熊本熊の熊  阅读(35)  评论(0)    收藏  举报