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 | |
+------------+-------------+------+-----+---------+-------+
重定向的日期随着这次更新而更新,但是计数没有增加 ?
最佳答案
我们可以测试 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 值。
关于MySQL UPDATE 查询不更新所有列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51787429/