› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
acz154
V2EX  ›  MySQL

求解一个 select 和 update 下 字段值 = 0 出现的错误

  •  
  •   acz154 · Jun 23, 2020 · 2508 views
    This topic created in 2284 days ago, the information mentioned may be changed or developed.

    字段 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 的数据不一样呢?

    6 replies  •  2020-06-24 17:03:07 +08:00
    kiracyan
        1
    kiracyan  
       Jun 23, 2020
    你看看能不能重现这个情况
    chainzhao
        2
    chainzhao  
       Jun 23, 2020
    varchar 类型建议还是加上引号吧,虽然它能够自动转换,但是会有一些已知的问题出现,例如,不加引号就不会走索引,查询速度差的不是一点点
    fhsan
        3
    fhsan  
       Jun 23, 2020
    0 null 空字符串 类型转换 都是巨坑
    takemeaway
        4
    takemeaway  
       Jun 23, 2020
    (varchar) = 0 不就是代表全部吗? 怎么不一样了? select 也是全部。
    acz154
        5
    acz154  
    OP
       Jun 24, 2020
    @takemeaway @fhsan @chainzhao @kiracyan
    其实 where 还有第二个条件 限定了 400 多条,但 update 的时候不知道为什么忽略了第二个条件,我执行了几次都是这种情况,不知道是不是什么原因导致的 ,用的是 5.7.29
    zhangysh1995
        6
    zhangysh1995  
       Jun 24, 2020
    试一下 UPDATE aaa SET kk = null WHERE xx != 0
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2418 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 05:02 · PVG 13:02 · LAX 22:02 · JFK 01:02
    ♥ Do have faith in what you're doing.