字段 xx 是 varchar 类型 我首先使用了 SELECT 查询 , 查出了 400 多条数据
SELECT * FROM aaa WHERE xx = 0
确定数据后 UPDATE 更新
UPDATE aaa SET kk = null WHERE xx = 0
发现全部数据的 kk 都变成了 null,查了下 (varchar) = 0 会出问题
但为什么 select 查出来的数据会 和 update 的数据不一样呢?
|  |      1kiracyan      2020-06-23 16:07:15 +08:00 你看看能不能重现这个情况 | 
|      2chainzhao      2020-06-23 17:14:01 +08:00 varchar 类型建议还是加上引号吧,虽然它能够自动转换,但是会有一些已知的问题出现,例如,不加引号就不会走索引,查询速度差的不是一点点 | 
|  |      3fhsan      2020-06-23 17:19:48 +08:00 0 null 空字符串 类型转换 都是巨坑 | 
|  |      4takemeaway      2020-06-23 17:20:56 +08:00 (varchar) = 0  不就是代表全部吗?  怎么不一样了?  select 也是全部。 | 
|      5acz154 OP @takemeaway @fhsan @chainzhao @kiracyan  其实 where 还有第二个条件 限定了 400 多条,但 update 的时候不知道为什么忽略了第二个条件,我执行了几次都是这种情况,不知道是不是什么原因导致的 ,用的是 5.7.29 | 
|      6zhangysh1995      2020-06-24 17:03:07 +08:00 试一下 UPDATE aaa SET kk = null WHERE xx != 0 |