Mysql case 语句影响表的所有行

标签 mysql

我遇到的情况让我有点困惑。我使用 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/

相关文章:

php - 以两种不同方式分配的两个php变量之间的区别

MYSQL - 选择所有行,但在一列上使用 Distinct

MySql 尝试提高查询性能但在列上出现错误

Javascript 如何在 mysql 中使用 Async/Await

php - 匹配两个mysql结果

mysql - 使用Explain调试缓慢的mySQL查询

php - 组合多个表的搜索

mysql - 这个 SQL DELETE FROM 语法有什么问题?

mysql - Fresh Lucee 5.2.7.63 安装无法连接到全新 MySQL 8 安装

mysql - Rand() 正在生成重复的数字,我想生成唯一的数字