新建测试表

CREATE TABLE `tab_3` (
  `id` int(11) NOT NULL,
  `fid` int(11) DEFAULT NULL,
  `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

mysql not in 遇到null字段

三个字段,其中一条数据的fid为null

现在执行sql语句:SELECT * from tab_3 where fid not in('12','16')

仅仅看sql语句的where条件是不包含[fid] 12和16的数据,但最终结果id为3的数据也没有查询到。

这是为什么?

因为fid字段为null

所以我们在开发过程中要注意这个坑。字段尽量使用not null,增加缺省值,除非你想储存null,储存空值的列很难优化,而且会影响到索引

mysql not in 遇到null字段

相关文章: