MySQL UPDATE查询不更新所有列?

时间:2018-08-10 13:15:55

标签: mysql sql sql-update

update short_url 
  set redirected="2018-08-10 15:07:44", 
  count=count+1 
  where long_val="EF7219D6-606D-409B-BEF1-00FFF9FF713C";

+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| short_val  | varchar(8)  | NO   | PRI | NULL    |       |
| long_val   | varchar(36) | NO   | PRI | NULL    |       |
| created    | datetime    | YES  |     | NULL    |       |
| redirected | datetime    | YES  |     | NULL    |       |
| count      | int(11)     | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+

重定向日期已与此更新一起更新,但计数未添加?

2 个答案:

答案 0 :(得分:1)

我们可以测试NULL值,并将NULL替换为非null值,例如...

UPDATE short_url t 
   SET t.redirected = '2018-08-10 15:07:44'
     , t.count = IFNULL( t.count ,0) + 1
--               ^^^^^^^         ^^^
 WHERE t.long_val = '...'  

如果count的当前值为NULL,那么我们将为其分配一个值1


请注意,大多数涉及NULL值的表达式都将求值为NULL。我们可以使用IS NULL条件测试,IFNULL()函数,符合ANSI标准的COALESCE函数等来处理NULL值。

答案 1 :(得分:0)

您需要做的是确保将字段“ count”的默认值设置为0而不是NULL