我在mysql中观察到了一个非常奇怪的行为,非常乐意得到一些建议。
我想将列中的字段从1更新为4,从6更新为9。为此,我用它作为测试
UPDATE `test` SET `id`= case when 'id'= 1 then 4 else 'id' end where id =1
但是,当我在phpmyadmin中运行上述命令时,值将更改为数字0,而不是4。
如果我运行相同的查询而不使用case
UPDATE `test` SET `id`= 4 WHERE `id` =1
很好用。
当我跑的时候
UPDATE `test` SET `id`=
case when 'id'= 1 then 4
when 'id'= 6 then 9
else 'id' end where id in (1,6)
它将1和6替换为“0”
1条答案
按热度按时间xe55xuns1#
id
是一个数字值,id通常是INT
键入mysql。你正在疯狂地混合回击(`````)和('
),因此您隐式地强制转换字符串'id'
一个int,结果是0。因此,您可能需要将查询更改为始终使用反勾号