题目链接:584. 寻找用户推荐人 - 力扣(LeetCode)
解题思路:
1、最开始看到这样的题目我还觉得挺简单的,不就是so easy嘛,就直接写出了以下答案
select name from Customer where referee_id !=2;
结果呢,库库报错
后来查阅了资料才发现这道题重点是对于Null值的处理
1.null是不可以进行大小比较的。
2.null表示未知,不确定,并不是表示空值。
3.在SQL中进行条件判断的时候,等号表示的是数值上的等价,is 更多表示的是一种属性。没有数值的时候,该字段就是空的
所以后来就又改了一下代码
select name from Customer where referee_id !=2 and referee_id is null
还是报错:
当时就很纳闷,怎么就又错了呢?
后来看了一下其他人的分析才知道不能用and,要用or,代码如下:
select name from Customer where referee_id !=2 or referee_id is null
我就在想,既然第一次设定条件不等于2了,结果应该已经不包含2了(当然是运行不成功的),那么为什么还要用or(或者)呢?
or的用法不就是两者选择一个,前者是没有把null给计算出来,后边不是得需要用and把referee_id 是 null的条件给添加上去吗?为什么用or呢?
运行结果如下
求网友解答: