如果一个字段的值为 null,这个时候用 count 函数统计这个字段的时候,这行记录是不会被统计到的,这个之前是知道的,不知道的是,where 条件里不等于不会把 null 的行查找出来。
昨天有个工作,有部分历史数据的某个字段的值有可能是错的,需要写脚本更新,把错误数据查找出来后更新成正确的,于是就写了下面的 sql:
select * from table_name where column <> 123
最终修复完数据后,一对数,发现还是不对,于是开始找原因,最终想到有可能是 sql 的 where 条件查找不出值为 null 的行,经过验证,果然如此。
然后再修改sql 为
select * from table_name where column <> 123 or column is null
解决问题了。
原文链接:记一次 MySQL 中字段值为 null 引发的问题,转载请注明来源!