0
点赞
收藏
分享

微信扫一扫

not_in函数致错


Not in 函数-致错

我们开发当中有些业务逻辑会用到not in()这个函数,

  • 岗位角度:不管是后端开发还是大数据开发还是数据分析师…
  • 技术角度:不管是Mysql、Hive、Maxcompute…

真实铺垫略加画彩

  1. 我是这样发现的,not in () 的结果为null,看了一下午sql,然后我决定就反响查询,先看in好使不好使,in也是非常的给力,直接甩给我80W+条数据,但是我左表的全量是90W+啊,这不证明有10W+是没有在右表里的么,淦!
  2. 我就又扣迟了几遍not in,发现还是不行,我就想有没有其他函数可以使用(我这里没有第一时间探讨not in函数的问题,给我一拳!)between?any?left join table.column != table.column? 感觉都用不了,算了先吃饭。
  3. 后面想到又个小姐姐晚上还要聊点东西呢,做不完我还早走有点不好,我遍吃肉遍打开CSDN搜索not in() 无效,擦 这么多博客 ,原来他们早就等着我了,具体原因是这个函数设计的是当in(里有null 值)时,我们的结果集永远是null,也就是说我那10W+数据被无情的干掉了。

干完饭实践一下,得出not in (params) 此处的参数必须是有值的,不可以有null,尽管是’ '也可以
在你的​​​not in(. 最后加 column != null)​​就可以,不同sql自己去适配

总结

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

转一个博客,我能早下班、给小姐姐聊天都靠它


举报

相关推荐

0 条评论