【问题标题】:Rows matched: 1 Changed: 0 Warnings: 0 Mysql update not happening匹配的行:1 更改:0 警告:0 Mysql 更新未发生
【发布时间】:2019-05-23 11:10:45
【问题描述】:

我正在从 mysql 命令行更新一个表..更新没有发生..

表格说明如下:

mysql> describe userdailycalorie;
+-------------------+----------+------+-----+---------+-------+
| Field             | Type     | Null | Key | Default | Extra |
+-------------------+----------+------+-----+---------+-------+
| id                | int(11)  | NO   | PRI | NULL    |       |
| balanced_diet     | bit(1)   | YES  |     | NULL    |       |
| calories_consumed | double   | YES  |     | NULL    |       |
| date              | datetime | YES  |     | NULL    |       |
| user_id           | int(11)  | YES  | MUL | NULL    |       |
+-------------------+----------+------+-----+---------+-------+
5 rows in set (0.13 sec)

对应的表格内容如下:

mysql> select * from userdailycalorie;
+----+---------------+-------------------+---------------------+---------+
| id | balanced_diet | calories_consumed | date                | user_id |
+----+---------------+-------------------+---------------------+---------+
| 16 |               |                 0 | 2018-02-02 00:00:00 |       3 |
+----+---------------+-------------------+---------------------+---------+
1 row in set (0.00 sec)

对应的Update语句如下:

mysql> update userdailycalorie  set calories_consumed= 205.4  and balanced_diet =true WHERE user_id = 3;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

匹配的行数为 1,表示它选择了该行。更新没有发生变化:0 ..我不知道为什么,...谁能帮我调试这个问题?

【问题讨论】:

    标签: mysql sql dml


    【解决方案1】:

    你可以试试下面-

    update userdailycalorie  
    set calories_consumed= 205.4, balanced_diet =1
    WHERE user_id = 3;
    

    【讨论】:

    • 没有变化.. 相同的输出 mysql> 更新 userdailycalorie -> 设置卡路里消耗 = 205.4 和 balance_diet =1 -> WHERE user_id = 3;查询正常,0 行受影响(0.00 秒)匹配行:1 更改:0 警告:0
    【解决方案2】:

    如果要更新两个字段不能使用AND,请用逗号分隔每个要更新的字段,

    update userdailycalorie  
    set calories_consumed = 205.4  
      , balanced_diet = true 
    WHERE user_id = 3;
    

    【讨论】:

    • 哦!.. 删除 And 并添加逗号后它起作用了..谢谢.. 另一方面,我想知道为什么 sql dint 把它作为一个问题.. 我的意思是它认为它是什么作为?
    • 我的猜测是尝试进行布尔运算。但不知道为什么没有给出错误。
    • 无需猜测。 set calories_consumed= 205.4 and balanced_diet =trueset calories_consumed = ((205.4) AND (0)) 因为balanced_diet = true 为假,所以查询的净效果是set calories_consumed = 0
    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多