mysql字段数据为null时反查询不到

 当我们通过 mysql 使用 NOT IN 查询时,如果条件字段可以为 NULL 并且值为NULL需要特别注意一下这个时候使用 NOT IN 查询时是查询不到的。

mysql字段数据为null时反查询不到

测试NULL时反查询不到例子

  • 假如我们现在有一个表 user
id nickname
1 张三
2 李四
3 NULL
4 王五
  • 现在我们查询用户名不是 张三李四 的用户
select * from users where user_name not in ('张三','李四');
  • 这个时候我们应该得到的是两条数据
id nickname
3 NULL
4 王五
  • 但是结果却只有一条数据
id nickname
4 王五

分析测试NULL时反查询不到问题

 这是因为 mysqlnot in 使用的是 不相等(!=) 比较,即每条记录的 user_name 都和 张三, 李四 进行数据比较。

foreach ($user_names as $user_name) {
       if ($user_name != '张三' && $user_name != '李四') {
               return true; // 符合条件
       } else {
               return false; //不符合条件
       }
}

mysql问题解决方案

  • mysqlNULL 的判断只能用 IS NULIS NOT NULL 判断, NULL != 任意值 都返回 false 所有 id = 3 的记录不符合条件。
  • 在使用 mysql 设计表字段时候我们应该避免允许 NULL 的存在,在设置字段时使用 NOT NULL 不允许存在 NULL
`createtime` INT UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',

给TA打赏
共{{data.count}}人
人已打赏
运维

composer常用命令

2024-11-22 11:59:10

运维

谷歌浏览器很卡占用内存大,phpstorm打开内存就飙升,解决方案

2024-11-22 11:59:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索