【MySQL】【数据库】sql的null不能用等号

LeetCode 584. 寻找用户推荐人

直达
给定表 customer ,里面保存了所有客户信息和他们的推荐人。

id name referee_id
1 Will NULL
2 Jane NULL
3 Alex 2
4 Bill NULL
5 Zack 1
6 Mark 2

写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2。
对于上面的示例数据,结果为:

name
Will
Jane
Bill
Zack

我的代码

select name from customer where (not(referee_id=2) or referee_id is null)

一开始直接写的!(referee_id=2),不对,因为NULL不能与数字作等于比较
后来改成referee_id=null,语句不对,因为什么情况下null都不能用等号
要写is null

其他思路

由于null不能比较,所以可以多一步把null转成0(当然不对原始数据做改动)

select name
from customer
where ifnull(referee_id,0)<>2
posted @ 2022-12-11 15:06  弦合二挂  阅读(70)  评论(0)    收藏  举报