您现在的位置是:首页 >

慎用是不能用吗 慎用Oracle的notin

火烧 2022-01-05 15:34:05 1067
慎用Oracle的 oti   帮财务人员处理数据 一个是ERP系统中的账面数据 一个是税务局给的官方数据 一张EXCEL表 想找出两边不匹配的数据   据说EXCEL 版本已经提供了这种比对的功能

慎用Oracle的notin  

  帮财务人员处理数据 一个是ERP系统中的账面数据 一个是税务局给的官方数据 一张EXCEL表 想找出两边不匹配的数据

  据说EXCEL 版本已经提供了这种比对的功能 但无奈数据量太大 操作起来巨慢如牛 而WPS 似乎还没这个功能 于是导入数据库中新建一个表存储这些数据来比对

  开始写了个SQL来查询税务有而ERP系统中没有的数据

  select * from tab_excel where taxcode not in

  (select erpcode from tab_excel)

  正常 然后反过来查ERP中存在而税务系统中不存在的数据

  select * from tab_excel where erpcode not in

  (select taxcode from tab_excel)

  返回 条数据 很奇怪 然后马上想到了是null的问题 taxcode必然存在值为null的记录 oracle中和null比较的返回值是unkown 所以才无法匹配

  于是修改SQL语句如下

慎用是不能用吗 慎用Oracle的notin

  select * from tab_excel tout where not exists

  (select from tab_excel where taxcode=tout erpcode)

  结果正常

lishixinzhi/Article/program/Oracle/201311/18720  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码