我遇到的情况让我有点困惑。我使用 case 语句来更新表的某些行。 sql 查询如下,但是如果我没有为 schema_value 列指定值,则查询会将其清除为 null。这是查询和表的副本。运行查询时,它将清空初始化并进行测试。
有什么想法吗?
UPDATE vals
SET valu
CASE
When name = 'sitename' THEN '$siteame'
When name = 'street' THEN '$stret'
When name = 'city' THEN '$cit'
When name = 'State' THEN '$sate'
When name = 'zipcode' THEN '$ipcode'
When name = 'phone' THEN '$pone'
When name = 'fax' THEN '$fx'
When name = 'social' THEN '$ocial'
END;
最佳答案
如果没有匹配的内容,只需添加一条 else 语句即可保留原始数据
UPDATE schema_vals
SET schema_value =
CASE
When schema_name = 'sitename' THEN '$siteame'
When schema_name = 'street' THEN '$stret'
When schema_name = 'city' THEN '$cit'
When schema_name = 'State' THEN '$sate'
When schema_name = 'zipcode' THEN '$ipcode'
When schema_name = 'phone' THEN '$pone'
When schema_name = 'fax' THEN '$fx'
When schema_name = 'social' THEN '$ocial'
ELSE schema_value
END;
关于Mysql case 语句影响表的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46197674/