问题
MySQL当有的字段数据为null时,对那个字段使用!=无法查出为null的数据
重现
用户表User,表数据和结构为
可以看出User表的nickname字段有的数据是null、有的不是。
当以 nickname
为where条件执行
select * from user
where nickname != '插葱的猪';
得到的结果为
很奇怪,没有nickname为null的数据
解决方案
在后面添加or user.nickname is null
或者or isnull(user.nickname)
就好了。
select * from user
where nickname != '插葱的猪' or isnull(user.nickname);
# 或者
select * from user
where nickname != '插葱的猪' or user.nickname is null ;
结果
不知道mysql为什么要这么做。