涉及到NULL 如何运算问题
表一如下:
表二如下:
现在要想表一和表二根据job1合并,并剔除表二Ti=4 的数据 left jon 组合 不影响组合结果。即如下连接,只去掉Ti是4的,其它保留
如果:
判断放在on 后面 则
不能满足需求
如果
放在where
后面
仍然不能满足需求
这时满足需求了
这里面涉及到SQL运算的顺序问题,又涉及到NULL字符的运算判断问题, NULL和任何值的运算都是NULL, 上面的 where 后面需要的是True, 如果出现一个NULL 就想相当于不是TRUE,Ti<>4遇到Ti是NULL的时候结果是一个NULL,因此不满足条件,而not exists T 把不是T的都算作真,包括NULL ,因此满足了需求。注意和上面的not (b.Ti<>4) 不一样, 这个是对NULL进行NOT 运算,还是NULL
更进一步,如果去掉not
结果是:
在此进行了一次左连接,然后又相等条件选择。